异常对象。 异常情况可以用异常对象表示,可以对其进行处理,如果忽略的话,程序会终止。
警告。警告只是打印错误信息。
引发异常。可以使用raise语句引发异常,他接受异常类或者异常实例作为参数
raise Exception("something is wrong!")
自定义异常类。用继承Exception类的方法可以创建自己的异常类.
class somecustomException(Exception): pass
捕捉异常。使用try语句中的except子句捕捉异常。如果在except子句中不特别制定异常类,那么所有的异常都会被捕捉 except: 异常可以放在元组中以实现多个异常的指定。同样在一个try/except语句中可以包含多个except子句来分别处理不同的异常。
#coding=utf-8
try:
x=input("x=")
y=input("y=")
print(x/y)
except(ZeroDivisionError,TypeError):#捕获一个或多个异常, 以元组传递
print("division is zero !")
#except: #捕获所有异常
#print("something wrong!")
#############################################
while True:
try:
x=input("x=")
y=input("y=")
print("x/y=%d"%(x/y))
except Exception:
print("try again!")
else:
break
finally:#无论异常与否都会执行finally 用来对可能的异常后进行清里
print("is over!")
else子句:如果try中没有引发异常,就会执行else子句。
finally 如果需要确保某些代码不论异常发生与否,都要执行一段代码 用finally 实现。
最终结果:
x=8
y=0
try again!
is over!
x=9
y=3
x/y=3
is over!
异常和函数。在函数内引发异常时,他就会被传播到函数调用的地方。(对于方法也是一样)