Python——什么是异常处理和异常处理的两种方式对比
什么是异常
程序中难免出现出错,一般可以分为两种:
1、语法错误
2、逻辑错误
1、什么是异常:异常是程序运行时发生错误的信号 。
2、python中异常的种类
在python中不同的异常可以用不同的类型(python中同一了类与类型,类型即类)去标识,不同的类对象标识不同的异常,一个异常标识一种错误
1、常用异常
异常处理
1、什么是异常处理
2、为何要进行异常处理
3、如何进行异常处理
异常是由程序的错误引起的,语法上的错误跟异常处理无关,必须在程序运行前就修正。
3(1)、使用 if 判断式
举个简单的例子:
上图中,主逻辑就一小段,但是为了异常处理写一大段的 if 语句,会导致代码的可读性非常差。
3(2)、使用python提供的异常处理
python为每一种异常定制了一个类型,然后提供了一种特定的语法结构用来进行异常处理
try:
被检测的代码块
except 异常类型:
try中一旦检测到异常,就执行这个位置的逻辑
举个例子:根据上图的逻辑
解释:把异常赋值给了e。并且第一段的主逻辑触发了异常,直接跳到下面,第二段的主逻辑并没有运行。
4、多分支
上面那种方式只能处理一个异常,如果有其他异常则处理不了。跟 if 语句一样,同样可以设置多分支来处理多种异常。
设置多个 except 语句来设立多分支
5、万能异常
跟 if 语句一样,有个跟 else 一样的 “ Exception ”, Exception 可以捕捉到任何异常:
except Exception
对于多分支和万能异常:
1、如果想要的效果是无论出现什么异常,我们统一丢弃,或者使用同一段代码逻辑去处理他们,那么此时一个Exception就够了。
2、如果想要的效果是,对于不同的异常需要定制不同的处理逻辑,那就需要用到多分支了(一个except处理一个异常)。
6、异常的其他机构
异常里还有 else 跟 finally,看下图:
7、主动触发异常
这个前面学到过,用的是 raise
8、自定义异常
异常也是个类,同样可以自定义
先上一个结论:自定制一个异常必须继承一个异常的基类。
我们先来看下普通的 TypeError :
同样的,我们也可以自定制一个简单的异常:
注意:这个自定制异常继承了 BaseException 。
9、断言
先看下断言是什么:
如果不对就会错误,抛出异常,同时停止运行
断言也可以用 if 来代替,不过断言更简洁一点。
10、总结