一般情况下,程序无法处理正常的逻辑执行过程时会发生异常。为了处理程序在运行过程中的异常和错误,python 同样定义了很多的标准异常以及异常处理机制用来处理程序运行过程中出现的异常。
前往 >>?【阅读原文】
在 python 语言中,处理异常的关键字主要有:try、except、else、finally 以及 raise 关键字。
try 关键字:主要是检测异常,如果发生异常情况时将程序处理交给 except 关键字。
except 关键字:获取异常并进行处理。
else 关键字:在执行完 try 关键字域中的代码块时,如果没有发现异常则接着执行 else 关键字代码块中的内容。
finally 关键字:无论是否发生异常都进入该关键字的域进行处理,通常主要处理资源关闭、对象内存释放等必须的操作。
raise 关键字:用于抛出自定义的异常信息使程序不能直接向下执行。
异常关键字通常都有多种方式进行组合之后使用,不同的组合更是能完成不同的异常处理场景。合理的异常处理不仅能完善程序执行过程中的逻辑操作,也能提升程序执行的性能。
try...except...else?组合异常处理
1try:
2print"正常处理逻辑"
3exceptException,e:
4print"异常处理逻辑"
5else:
6print"执行完成,没有发现异常"
1try:
2print"正常处理逻辑"
3except:
4print"异常处理逻辑"
5else:
6print"执行完成,没有发现异常"
这个组合在处理异常时,第一种处理方式 except 关键字后面跟上了具体的异常对象、第二种则没有,如果按照第二种情况不添加任何的异常对象则表示捕获处理所有的异常,缺点是不能输出具体的异常信息。
1try:
2print"正常处理逻辑"
3exceptWindowsError,e1:
4print"异常信息:",e1.message
5print"异常逻辑处理"
6exceptImportError,e2:
7print"异常信息:",e2.message
8print"异常逻辑处理"
这种是多异常处理组合,通过将多个 except 关键字连接的形式捕获不同的异常并进行异常处理的程序逻辑。
try...finally?组合异常处理
1try:
2print"正常逻辑处理"
3finally:
4print"释放资源"
执行正常的程序逻辑,无论 try 的代码块内是否检测到异常信息都要执行 finally 代码块里面的程序逻辑。
try...except...finally?组合异常处理
1try:
2print"正常逻辑处理"
3try:
4print"正常逻辑处理"
5finally:
6print"强制执行程序逻辑"
7exceptException,e:
8print"发生异常:",e.message
9print"异常处理逻辑"
在很多的编程语言中也提供了可以自定义异常的操作,python 也有着自己可以自定义异常并且使用自定义的方式。使用的思维方式也是大致相同,都是通过继承标准的异常之后封装成自己的异常对象然后在合适的处理逻辑中将自定义的异常抛出。
定义自定义异常
1classCustomException(Exception):
2def__init__(self,err):
3self.args?=?err
使用自定义异常
1a?=?int(raw_input())
2ifa?<0:
3raiseCustomException("类型输入错误")
4else:
5print"正常逻辑"