通常状况下,程序没法处理正常的逻辑执行过程时会发生异常。为了处理程序在运行过程当中的异常和错误,python 一样定义了不少的标准异常以及异常处理机制用来处理程序运行过程当中出现的异常。python
在 python 语言中,处理异常的关键字主要有:try、except、else、finally 以及 raise 关键字。编程
try 关键字:主要是检测异常,若是发生异常状况时将程序处理交给 except 关键字。后端
except 关键字:获取异常并进行处理。微信
else 关键字:在执行完 try 关键字域中的代码块时,若是没有发现异常则接着执行 else 关键字代码块中的内容。编程语言
finally 关键字:不管是否发生异常都进入该关键字的域进行处理,一般主要处理资源关闭、对象内存释放等必须的操做。性能
raise 关键字:用于抛出自定义的异常信息使程序不能直接向下执行。spa
异常关键字一般都有多种方式进行组合以后使用,不一样的组合更是能完成不一样的异常处理场景。合理的异常处理不只能完善程序执行过程当中的逻辑操做,也能提高程序执行的性能。code
try...except...else 组合异常处理对象
1 try: 2 print "正常处理逻辑" 3 except Exception,e: 4 print "异常处理逻辑" 5 else: 6 print "执行完成,没有发现异常"
1 try: 2 print "正常处理逻辑" 3 except: 4 print "异常处理逻辑" 5 else: 6 print "执行完成,没有发现异常"
这个组合在处理异常时,第一种处理方式 except 关键字后面跟上了具体的异常对象、第二种则没有,若是按照第二种状况不添加任何的异常对象则表示捕获处理全部的异常,缺点是不能输出具体的异常信息。继承
1 try: 2 print "正常处理逻辑" 3 except WindowsError,e1: 4 print "异常信息:",e1.message 5 print "异常逻辑处理" 6 except ImportError,e2: 7 print "异常信息:",e2.message 8 print "异常逻辑处理"
这种是多异常处理组合,经过将多个 except 关键字链接的形式捕获不一样的异常并进行异常处理的程序逻辑。
try...finally 组合异常处理
1 try: 2 print "正常逻辑处理" 3 finally: 4 print "释放资源"
执行正常的程序逻辑,不管 try 的代码块内是否检测到异常信息都要执行 finally 代码块里面的程序逻辑。
try...except...finally 组合异常处理
1 try: 2 print "正常逻辑处理" 3 try: 4 print "正常逻辑处理" 5 finally: 6 print "强制执行程序逻辑" 7 except Exception,e: 8 print "发生异常:",e.message 9 print "异常处理逻辑"
在不少的编程语言中也提供了能够自定义异常的操做,python 也有着本身能够自定义异常而且使用自定义的方式。使用的思惟方式也是大体相同,都是经过继承标准的异常以后封装成本身的异常对象而后在合适的处理逻辑中将自定义的异常抛出。
定义自定义异常
1class CustomException(Exception): 2 def __init__(self,err): 3 self.args = err
使用自定义异常
1 a = int(raw_input()) 2 if a < 0: 3 raise CustomException("类型输入错误") 4 else: 5 print "正常逻辑"
更多精彩前往微信公众号【Python 集中营】,专一后端编程实战,原创文章天天更新!