伪知识之通俗易懂得解释python中异常类和异常链的区别持续更新:【内向即傻子--沈吟秋】

纯属个人见解,内容并不是完全靠谱,仅供参考

自定义异常类以及异常链

自定义异常类的作用就是覆盖Exception范围未涵盖的错误异常。这类错误异常可以通过自定义异常去捕捉以及处理。

所以对于可以被Exception所捕捉到的普遍异常,是没有必要自定义的,如果去自定义也需要很深厚的编程功力,目前没有能力拓展。

以下是一个简单的异常算法,在该算法中包含了自定义异常类,以及异常链的相关知识。

异常链是什么呢?

就是当你处理一个异常会产生第二个异常比如:

except SelfError ase:
raise Exception

像这样就会产生两个异常,下面的异常是由上面的异常直接造成的。在终端上就会输出两个错误异常。那么如果只希望终端上面就报下面这个异常,而不报SelfError这个异常怎么办呢?         

就要使用raise Exception(这里是Exception)from None

这时终端出现一个异常

如果使用raise Exception (这里是Exception)from OhterException(SelfError)

就会出现两个异常。在这里这句话等同于

except SelfError ase:
raise Exception

作用:用来多加一行代码

实战算法如下:

1.class SelfError(Exception):
2.    """自定义异常类"""
3.    def __init__(self,sex,toy:'Vagina'='Vibe'):
4.        Exception.__init__(self)
5.        self.sex=sex
6.        self.toy=toy
7.
8.newhalf={'didi':'ai''ai'}
9.newhalf.update(dict.fromkeys(['jiji','mimi'],'aiai'))
10.try:
11.    a,*b=newhalf
12.    if len(b)<3:
13.        raise SelfError(None)
14.except SelfError ase:
15.    raise Exception('{}长的难看的再折腾也是废物,/'

'长的好看再瞎折腾也不会差'.format(e.toy))from e.__cause__(e.__cause__就是None)

res-------------------------------------

Traceback (most recent call last):

File "E:/代码三/hello.py", line 17, in <module>

'长的好看再瞎折腾也不会差'.format(e.toy)) from e.__cause__

Exception: Vibe长的难看的再折腾也是废物,长的好看再瞎折腾也不会差

猜你喜欢

转载自blog.csdn.net/qq_37995231/article/details/82819432