python中的异常
在python编程中会出现许多的程序错误,程序在遇到这种错误时会直接终止程序,导致一个程序,因为一个小错误直接结束运行
如
print(12/0)
异常是指在语法正确的前提下,程序运行时报错就是异常。
异常的捕获
当Python中发生异常时我们如果不希望程序终止执行,就需要捕获处理它。
捕获异常的方法:
try:
...代码..
except 异常类型:
...处理异常代码...
程序顺序执行try中的代码,如果try中代码报错,则终止执行try中的代码,如果出现的错误类型与所写的异常类型相符则执行exception中处理异常的代码,这样就成功捕获异常,可以通过对异常的判断,解决问题。
如果try中报错的代码发生的错误与写的异常类型不同,是不能捕获异常,处理异常的代码也不会执行程序会直接结束
如果try中没有报错,则不执行except中的代码。
如何捕获多个异常
如果一段代码中可能会触发多个异常,我们可以写一个try多个except来捕获多个异常。
try:
执行的代码...
except 异常类型:
处理异常代码1
except 异常类型 :
处理异常代码2
except 异常类型:
处理异常代码3
出现错误的时候会自动匹配一个与异常相同的类型,然后执行代码,其他异常的处理代码就不会执行,如果匹配不到类型则会直接结束程序
try:
执行的代码...
except(异常类型1,异常类型2,异常类型3):
处理异常代码...
这样也可以一次捕获多个异常,当满足一个异常类型,就会执行异常处理代码
如何捕获所有异常
try :
...代码...
except Exception :
...处理异常代码...
如果except后不写异常类型,或者写Exception,就是所有的异常都会触发异常处理代码(Exception是所有异常的父类,所以所有异常都会触发他)
将异常实例化
try :
执行代码...
except: 异常类型 as 变量名:
执行异常...
变量名也可以叫做异常的对象,一般使用e 来表示,e对象中包含了异常信息的一些描述,我们可以根据描述做不同的处理。
每一种异常就是一个类(继承Exception类),这种方法就是将异常实例化,这样就可以对异常进行一些操作
try :
执行代码...
except: 异常类型1 as 变量名:
处理异常代码...
...
else:
...代码...
如果try中没有抛出异常则执行else中的代码,如果try中抛出了异常则不会执行else中的代码,会匹配异常类型,如果能匹配上会执行异常代码,匹配不上会终止程序
(写else一定要有except否则包语法错误)
try :
执行代码...
except: 异常类型1 as 变量名:
处理异常代码...
...
finally:
...代码...
不管try中是否抛出异常,最终都会执行finally中的代码。
人为制造异常
raise 异常类型(‘描述信息’)
当程序执行到raise是,会自动的触发异常,让程序结束,或者执行except,就相当于人为创造一个异常
自定义异常
当程序中的异常类型不满足时,我们可以自定义类型异常。
每个异常就是一个类,自定义异常就是写一个这样的类。
class Yichang (Exception):
Def __init__(self ,msg):
self.msg=msg
Def __str__(self):
return str(self.msg)
自定义好了异常,一般自定义的异常需要与raise一起使用,用raise Yichang(‘描述信息’)
来触发异常,然后用except Yichang:
来写遇到这个异常执行的代码,或者用except :Yichang as 变量名
将异常实例化,然后对异常进行读取,或者操作
try:
raise Yichang (‘自定义异常’)
except Yichang :
...处理异常代码...