1.内建异常类的继承关系

2.常见异常汇总
| 异常名称 | 说明 | 
|---|---|
|  
     
     ArithmeticError
       |  
     
     所有数值计算错误的基类
       | 
|  
     
     AssertionError
       |  
     
     断言语句失败
       | 
|  
     
     AttributeError
       |  
     
     对象没有这个属性
       | 
|  
     
     BaseException
       |  
     
     所有异常的基类
       | 
|  
     
     DeprecationWarning
       |  
     
     关于被弃用的特征的警告
       | 
|  
     
     EnvironmentError
       |  
     
     操作系统错误的基类
       | 
|  
     
     EOFError
       |  
     
     没有内建输入,到达 EOF 标记
       | 
|  
     
     Exception
       |  
     
     常规错误的基类
       | 
|  
     
     FloatingPointError
       |  
     
     浮点计算错误
       | 
|  
     
     FutureWarning
       |  
     
     关于构造将来语义会有改变的警告
       | 
|  
     
     GeneratorExit
       |  
     
     生成器(generator)发生异常来通知退出
       | 
|  
     
     ImportError
       |  
     
     导入模块/对象失败
       | 
|  
     
     IndentationError
       |  
     
     缩进错误
       | 
|  
     
     IndexError
       |  
     
     序列中没有此索引(index)
       | 
|  
     
     IOError
       |  
     
     输入/输出操作失败
       | 
|  
     
     KeyboardInterrupt
       |  
     
     用户中断执行(通常是输入^C)
       | 
|  
     
     KeyError
       |  
     
     映射中没有这个键
       | 
|  
     
     LookupError
       |  
     
     无效数据查询的基类
       | 
|  
     
     MemoryError
       |  
     
     内存溢出错误(对于 Python 解释器不是致命的)
       | 
|  
     
     NameError
       |  
     
     未声明/初始化对象 (没有属性)
       | 
|  
     
     NotImplementedError
       |  
     
     尚未实现的方法
       | 
|  
     
     OSError
       |  
     
     操作系统错误
       | 
|  
     
     OverflowError
       |  
     
     数值运算超出最大限制
       | 
|  
     
     OverflowWarning
       |  
     
     旧的关于自动提升为长整型(long)的警告
       | 
|  
     
     PendingDeprecationWarning
       |  
     
     关于特性将会被废弃的警告
       | 
|  
     
     ReferenceError
       |  
     
     弱引用(Weak reference)试图访问已经垃圾回收了的对象
       | 
|  
     
     RuntimeError
       |  
     
     一般的运行时错误
       | 
|  
     
     RuntimeWarning
       |  
     
     可疑的运行时行为(runtime behavior)的警告
       | 
|  
     
     StandardError
       |  
     
     所有的内建标准异常的基类
       | 
|  
     
     StopIteration
       |  
     
     迭代器没有更多的值
       | 
|  
     
     SyntaxError
       |  
     
     Python 语法错误
       | 
|  
     
     SyntaxWarning
       |  
     
     可疑的语法的警告
       | 
|  
     
     SystemError
       |  
     
     一般的解释器系统错误
       | 
|  
     
     SystemExit
       |  
     
     解释器请求退出
       | 
|  
     
     TabError
       |  
     
     Tab 和空格混用
       | 
|  
     
     TypeError
       |  
     
     对类型无效的操作
       | 
|  
     
     UnboundLocalError
       |  
     
     访问未初始化的本地变量
       | 
|  
     
     UnicodeDecodeError
       |  
     
     Unicode 解码时的错误
       | 
|  
     
     UnicodeEncodeError
       |  
     
     Unicode 编码时错误
       | 
|  
     
     UnicodeError
       |  
     
     Unicode 相关的错误
       | 
|  
     
     UnicodeTranslateError
       |  
     
     Unicode 转换时错误
       | 
|  
     
     UserWarning
       |  
     
     用户代码生成的警告
       | 
|  
     
     ValueError
       |  
     
     传入无效的参数
       | 
|  
     
     Warning
       |  
     
     警告的基类
       | 
|  
     
     ZeroDivisionError
       |  
     
     除(或取模)零 (所有数据类型)
       | 
3.定义自己的异常类:
 有时候我们也需要自己定义异常类。自定义异常类一般都是运行时异常,通常 继承 
 Exception 
 或其子类即可。命名一般以 
 Error
 、
 Exception 
 为后缀。
 
class AgeError(Exception):  # 继承 Exception
    def __init__(self, errorInfo):
        Exception.__init__(self)
        self.errorInfo = errorInfo
    def __str__(self):
        return str(self.errorInfo) + ",年龄错误!应该在 1-110 之间"
if __name__ == "__main__":  # 如果为 True,则模块是作为独立文件运行,可以执行测试代码
    age = int(input("输入一个年龄:"))
    if age < 1 or age > 110:
        raise AgeError(age)
    else:
        print("正常的年龄:", age)
 
 执行输出:
输入一个年龄:222
Traceback (most recent call last):
File "E:\Project\OscarTest\test\testcase\atesa.py", line 14, in <module>
raise AgeError(age)
__main__.AgeError: 222,年龄错误!应该在 1-150 之间
4.使用 Traceback 模块打印异常信息
import traceback
try:
    print("step1")
    num = 1 / 0
except:
    traceback.print_exc()
 
5.其他:
- try...except...else 结构增加了“else 块”。如果 try 块中没有抛出异常,则执行 else 块。如果 try 块中抛出异常,则执行 except 块,不执行 else 块。
 - 由于 return 有两种作用:结束方法运行、返回值。 
  一般不要将 return 语句放到 try、except、else、finally 块中,会发生一些意想不到的错误。建议放到方法最后。
 






![[ Linux ] Linux信号概述 信号的产生](https://img-blog.csdnimg.cn/img_convert/9aa71d7ff6f45fdf318af92f00796e0f.png)












