异常处理
完整形式
1 2 3 4 5 6 7 8 9 10 11 12 13
| try: 有异常语句... except <name1>: 处理name1异常的语句 except <name2>: 处理name2异常的语句 . . . else: 没有触发异常执行的语句 finally: 无论有没有异常都会执行的语句
|
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| try: x = input("Enter the first number: ") y = input("Enter the second number: ") print x / y except TypeError, e: print "Type Error " + e.message except ZeroDivisionError, e: print "ZeroDivisionError " + e.message else: print "No Error" finally: print "Finish"
Enter the first number: 1 Enter the second number: 0 ZeroDivisionError integer division or modulo by zero Finish
Enter the first number: d Name Error name 'd' is not defined Finish
|
- 当发生错误没有用try/except时,错误就会被传播到调用的函数中;如果调用函数中也没有捕获异常,这些异常就会传递到程序的最顶层
- Python会从头到尾以及从左到右查看except子句,然后执行第一个相符的except下的语句
- except和else语句只会执行其中的一个,try捕获到异常时会进入except处理异常,try没有捕获到异常会进入else执行相应代码
- finally无论是否捕获到异常,都会去执行里面的语句;通常是将释放资源、关闭IO流等操作放在里面
except多种形式
上述例子中except后跟的是异常的名字,except语句还有很多种写法