异常处理的基本语法:
try:
error
except NameError:
print('遇到异常时执行这里')
以上就是一个单分支单异常的处理,这种方式是异常处理中最常用的.除了单分支单异常,还有下面几种
单分支多异常:
try:
被检测的代码块
except (异常类型1,异常类型2.....):
try中一旦检测到以上异常类型,就执行这里
except后加一个元组,元组中为多种异常类型,即可实现单分支处理多异常.
缺点在于无法知道具体的类型种类,处理不同的异常执行的操作一样
多分支:
try:
被检测的代码块
except 异常类型1:
try中一旦检测到异常类型1,就执行这里
except 异常类型2:
try中一旦检测到异常类型2,就执行这里
多分支就可以实现对不同的异常类型采取不同的操作.
else:
try:
被检测的代码块
except 异常类型1:
try中一旦检测到异常类型1,就执行这里
except 异常类型2:
try中一旦检测到异常类型2,就执行这里
else:
在所有except中的内容都没有执行时,执行这里
finally:
def func():
try:
print('try')
return
except Exception:
print('报错')
finally:
print('finally')
func()
finally中的语句无论怎样都会执行,即使try中就已经返回值,但还是会打印finally
finally通常用于归还系统资源,关闭文件
as:
try:
error
except Exception as exp:
print(exp)
使用as来将错误信息赋给一个变量,通过这个变量就可以查看错误信息
万能异常Exception:
- Exception为万能异常,能够处理任何种类的异常.
- Exception一般与as连用,通过as来获取异常信息,查看异常信息来得知问题.
- 万能异常永远写在多分支处理异常的最后一个,否则Exception后的异常相当于没写,全部会被Exception处理.
- 但是异常处理应该使用最贴近的类型来处理异常,不应该乱用Exception.
自定义异常:
通过定义一个类,继承BaseException来成为一个异常类,类中定义一个__init__方法和__str__方法.
通过关键字raise来抛出异常
class Errorcls(BaseException):
def __init__(self,name):
self.name = name
def __str__(self):
return self.name
raise Errorcls('error')