异常
Python使用被称为异常的特殊对象来管理程序的执行期间发生的错误。每当发生让Python不知所措时,它都会创建一个异常对象。
使用try-except时即便出现异常,程序也能继续运行。
try-except语法如下:
try:
正常的操作
......................
except():
发生异常,执行这块代码
......................
else:
如果没有异常执行这块代码
简单举个例子
--------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-57-93411800c26a> in <module>
1 a=3
2 b=0
----> 3 a/b
4 a+b
ZeroDivisionError: division by zero
从上面的程序我们知道因a/b异常导致程序没有继续下面a+b的运算,我们可以写个简单的try-except的语句避免这种现象。
1 a=3
2 b=0
3 try:#此代码块写出可能引发错我的代码
4 a/b
5 except(ZeroDivisionError):#可以用()写出一个或多个错误类型,也可不写
6 print("除数不能为0")
7 a+b
3
举个try-except-else例子
1 while True:
2 first=input("first number:")
3 if first=="Y":
4 break
5 second=input("second number:")
6 if second=="E":
7 break
8 YE=int(first)/int(second)#input输出的是str,需要转换成数值类型。
9 print(YE)
first number:1
second number:2
0.5
first number:2
second number:3
0.6666666666666666
first number:1
second number:0
---------------------------------------------------------------------------
ZeroDivisionError:
由上可知出现了除数为0的错误导致程序终止,哪里引发的异常我们就针对这段代码块写个try-except-else的程序
1 while True:
2 first=input("first number:")
3 if first=="Y":
4 break
5 second=input("second number:")
6 if second=="E":
7 break
8 try:#因为YE可能引起异常,在此写try
9 YE=int(first)/int(second)#input输出的是str,需要转换成数值类型。
10 except:#可省略错误类型
11 print("除数不能为0")
12 else:#没有错误的话继续执行下面的程序
13 print(YE)
first number:1
second number:2
0.5
first number:1
second number:3
0.3333333333333333
first number:1
second number:0
除数不能为0
first number:Y
我们加了一个try-except-else即使出现除数为0的情况程序一直继续运行,直到first=="Y"结束运行
try-finally 语句
try-finally 语句无论是否发生异常都将执行最后的代码。
1 a=3
2 b=0
3 try:#此代码块写出可能引发错我的代码
4 a/b
5 finally:
6 print(2+3)
---------------------------------------------------------------------------
ZeroDivisionError Traceback (most recent call last)
<ipython-input-76-e428db7b9f9f> in <module>
2 b=0
3 try:#此代码块写出可能引发错我的代码
----> 4 a/b
5 finally:
6 print(2+3)
ZeroDivisionError: division by zero
虽然上面的程序报错了,但依旧执行了2+3。