异常

什么是异常,异常也称为bug
bug:早期的计算机采用大量的继电器工具,马克二型就是这样,1945年9月9日,下午三点,马克二型无法工作,技术人员试了很多方法,最后定位到70号继电器出错。负责人哈珀观察出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死,她把蛾子取出,用透明胶布贴到“事件记录本”上,并注明“第一个发现虫子的实例”,由此之后,引发软件失效的缺陷,便称为bug

捕获异常

遇到bug时,有两种处理情况:

  1. 整个程序因为bug停止运行
  2. bug进行提醒,整个程序继续运行

世界上没有完美无缺的事物,自然也不存在没有bug的程序。所以在真实工作中,我们不想因为小小的bug导致程序崩溃,也就是我们希望达到第2种情况,那么捕获异常就很重要了

捕获异常的作用在于,提前假设某处会出现异常,提前做好准备,当真有异常时,可以有后续处理手段

捕获常规异常

基本语法:

1
2
3
4
try:
可能发生错误的代码
except:
如果出现异常执行的代码

except:改为except Exception as e:是一样的效果,Exception是顶级的异常

捕获指定异常

基本语法:

1
2
3
4
try:
可能发生错误的代码
except NameError as e:
如果出现异常执行的代码

NameError是关键字,Python内置的定义的错误,同理还有ZeroDivisionError

捕获多个异常:

1
2
3
4
try:
可能发生错误的代码
except (NameError, ZeroDivisionError) as e:
如果出现异常执行的代码

执行没有异常的代码:
基本语法:

1
2
3
4
5
6
try:
可能发生错误的代码
except:
如果出现异常执行的代码
else:
没有出现异常执行的代码

无论事发后异常都要执行的代码:
基本语法:

1
2
3
4
5
6
7
8
try:
可能发生错误的代码
except:
如果出现异常执行的代码
else:
没有出现异常执行的代码
finally:
无论是否异常都要执行的代码

异常是能够传递的,即在各个函数中互相调用时,异常会根据调用关系向上传递