• python自定义异常和主动抛出异常


    python自定义异常和主动抛出异常

    自定义异常主要是利用了自己定义的异常类的名字,对异常进行分门别类,再没有别的作用

    import re
    import os
    class ExistsError(Exception):
        pass
    class KeyInvalidError(Exception):
        pass
    def fun(path,mnk):
        """
        去path路径的文件中,找到前缀为prev的一行数据,获取数据并返回给调用者。
            1000,成功
            1001,文件不存在
            1002,关键字为空
            1003,未知错误
            ...
        :return:
        """
        response = {'code': 1000, 'data': None}
        try:
            with  open(path,encoding="utf-8") as f1:
                line=f1.readline()
                str = re.match("mnk", line)
            if not os.path.exists(path):
                raise Exception() #抛出的是ExistsError类的一个实例
            if not str:
                raise KeyInvalidError()
    
        except ExistsError as e:                #下面的捕获异常是逐行往下匹配的,只要捕获到异常就不往下执行了
            response['code']=1003               #捕获异常以后可以做一些自己定义的东西
            print(response['code'])
        except Exception as e:                  #**自己定义多个异常类名的目的就是将来区分不同的错误类型,再没有别的意思
            response['code'] = 1004
            print(response['code'])
    fun(r"E:day26s15day26	est", "p")

    下面是对主动抛出异常的一点总结

    #知识点:如何自定义类
    class MyException(Exception):                   #让MyException类继承Exception
        def __init__(self,name,age):
            self.name = name
            self.age = age
    try:
        #知识点:主动抛出异常,就是实例化一个异常类
        raise MyException("zhansgan",19)            #实例化一个异常,实例化的时候需要传参数
    except MyException as obj:                      #这里体现一个封装,
        print(obj.age,obj.name)                     #捕获的就是MyException类携带过来的信息
    
    except Exception as obj:                        #万能捕获,之前的可能捕获不到,这里添加Exception作为保底
        print(obj)
    

      

  • 相关阅读:
    soa soap http rpc
    Work Queues(点对多)
    Hello World模式
    RabbitMQ 概念
    RabbitMQ安装
    gradle ssh 插件
    gradle基础配置
    将java打jar包成linux后台服务service
    java 8 日期api
    springboot linux启动方式
  • 原文地址:https://www.cnblogs.com/zhuhaofeng/p/9567282.html
Copyright © 2020-2023  润新知