Python3面向对象--3.异常(1)分类

在理想状态下,代码才能返回正确的结果。
在以前,只有严格检查每个函数的输入才能确保它们是合理的才行。通常,特殊的返回值表明错误状态。例如,通过返回一个负值表示无法计算得到正值。不同的数字代表不同的错误,所有调用这一函数的代码必须明确地检查所有的错误状态并且执行对应的动作。很多程序没有这么做,那么程序就崩溃了。
在对象的实际中,情况就不同了。

异常:
本质上是一个对象。有很多不同的异常类,并且我们可以定义自己的异常类。特殊的错误对象只有在合理的时候处理,当发生异常时,所有本该发生的事都没有发生,除非是在遇到异常时才应该发生的事。

分类:
Python3面向对象--3.异常(1)分类
所有异常都继承于BaseException
大部分异常都是Exception的子类
SystemExit和keyboardlnterrupt直接继承于BaseException

SystemExit异常:在程序自然退出时候抛出,通常是因为我们在代码中的某处调用了sys.exit函数。
设计这个异常的目的是,在程序最终推出之前完成清理工作,而不需要显示地处理(因为清理代码会完成再finally语句中,)。
如果确实要处理这个异常,通常只是将其抛出,因为捕获这个异常将会导致程序无法退出。当然,有时候我们确实希望阻止程序推出,例如还有外保存的更改时,我们需要询问用户他们是否真的想要推出。
因为不想再一般异常捕获时候捕获它,因此它直接继承于BaseException。

keyboardlnterrupt异常:常见于命令行程序,当用户执行依赖于系统的按键组合终端程序是会抛出这个异常,这是用户故意中断一个正在运行的程序的标准方法,同样,以结束程序作为对它的响应,应该再finally块中完成清理任务,