什么是异常:
程序遇到错误后,会引发异常,如果异常对象未被处理或捕捉,程序会回溯Traceback终止执行;
异常捕捉和处理方式
⑴try:
print(10/0)
except Exception as e: #Exception是所有异常的基类
print("Invalid input",e)
#当我们知道可能出现的异常类型时,可以指定处理的异常类型,除指定的异常类型外 ,其它异常将依然会导致程序崩溃
⑵try:
y=input('Enter the number')
print(10/y)
except (ZeroDivisionError,TypeError) as e:
print(e)
⑶nuffled=False #通过本变量可进行异常的屏蔽和开启
try:
y=input('Enter the number')
print(10/y)
except ZeroDivisionError:
if nuffled: #当开关打开时,except捕捉到异常后,会打印异常信息,不影响用户使用
print('Division by zero is illegal')
else:
raise #当开头未打开时,except捕捉到异常后,会引发异常,方便内部使用时准确定位问题
⑷try:
print(x/y)
except : #捕捉所有异常,隐藏所有未处理的错误,比较危险的一种方式
print("something wrong happened")
⑸try:
print(x/y)
except Exception as e :
print(e)
print("please try again")
else:
print("over") #只有在未出现异常时,else后的语句才会被执行
finally:
print("cleaning up")#不管是否出现异常,finally后的语句都会被执行
raise语句
当程序出现错误,python会自动引发异常,也可以通过raise显示地引发异常。一旦执行了raise语句,raise后面的语句将不能执行。
try: if i in range(5): print (10/i) raise ZeroDivisionError #如果引发ZeroDivisionError异常,后面的代码将不能执行 print len(s) #这句不会执行,但是后面的except还是会走到 except TypeError: print "空对象没有长度"