python | 异常继承关系和自定义异常实现代码实例

自定义异常类应该总是继承自内置的 Exception 类, 或者是继承自那些本身就是从 Exception 继承而来的类。 尽管所有类同时也继承自 BaseException ,但你不应该使用这个基类来定义新的异常。BaseException 是为系统退出异常而保留的,比如 KeyboardInterruptSystemExit 以及其他那些会给应用发送信号而退出的异常。 因此,捕获这些异常本身没什么意义。 这样的话,假如你继承 BaseException 可能会导致你的自定义异常不会被捕获而直接发送信号退出程序运行。

例一:

# 自定义异常
# 自定义异常能让异常更精准
# 自定义异常类:当list内元素长度超过10的时候抛出异常
# 自定义异常类:消息小于8的时候抛出异常
class lenError(Exception):
    def __init__(self,msg):
        self.msg = msg

    def __str__(self):
        return self.msg

lst = [1,2,3,4,5,6,7]
try :
    if not 8 <= len(lst) <= 10:
        raise lenError("长度不在8到10 之间")
except lenError as er:
    print(er)

例二:

自定义异常 需要继承Exception
 
class MyException(Exception):
 
    def __init__(self, *args):
        self.args = args
 
#raise MyException('爆出异常吧哈哈')
 
#常见做法定义异常基类,然后在派生不同类型的异常
 
class loginError(MyException):
    def __init__(self, code = 100, message = '登录异常', args = ('登录异常',)):
        self.args = args
        self.message = message
        self.code = code
class loginoutError(MyException):
    def __init__(self):
        self.args = ('退出异常',)
        self.message = '退出异常'
        self.code = 200
#raise loginError() # 这里突然返现 raise引发的异常将中断程序
#
try:
    raise loginError()
except loginError as e:
    print(e) #输出异常
    print(e.code) #输出错误代码
    print(e.message)#输出错误信息

 .如何手动抛出异常:raise

系统的自带的异常只要触发会自动抛出,比如NameError,但用户自定义的异常需要用户自己决定什么时候抛出。 raise 唯一的一个参数指定了要被抛出的异常。它必须是一个异常的实例或者是异常的类(也就是 Exception 的子类)。大多数的异常的名字都以"Error"结尾,所以实际命名时尽量跟标准的异常命名一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值