情况一:
>>> try:
print(num) #此处产生异常
print("-----hello-----") # 上面代码产生错误,此处不执行,跳过
except NameError: # NameError 为异常名称
print("-----Error-----") #try中产生异常,执行此处代码
-----Error-----
情况二:
>>> try:
print(num) #此处产生异常
print("-----hello-----") #上面代码产生错误,此处不执行,跳过
except (NameError,FileNotFound): #NameError 为异常名称,可以是多个,python3中用元组
print("-----Error-----") #try中产生异常,执行此处代码
-----Error-----
情况三:
>>> try:
print(num) #此处产生异常
print("-----hello-----") #上面代码产生错误,此处不执行,跳过
except (NameError,FileNotFound): #NameError 为异常名称,可以是多个,python3中用元组
print("-----Error1-----") #try中产生异常,执行此处代码
except Exception: #不是上面的异常,其他的异常都会捕捉到
print("-----Error2-----")
-----Error1-----
情况四:
>>> try:
print(num) #此处产生异常
print("-----hello-----") #上面代码产生错误,此处不执行,跳过
except Exception: #无论什么异常都会捕捉到
print("-----Error2-----") #捕捉到异常后,执行下面代码
-----Error2-----
情况五:
try:
print(num) #此处产生异常
print("-----hello-----") #上面代码产生错误,此处不执行,跳过
except Exception as ret: #捕捉到的异常放入ret中,并执行下面的代码
print("-----Error2-----")
print(ret)
-----Error2-----
name 'num' is not defined
情况六:
try:
print("-----hello-----")
except Exception as ret: #捕捉到的异常放入ret中,并执行下面的代码
print("-----Error2-----")
print(ret)
else: #没有异常时,执行下面代码
print("-----NoError-----")
-----hello-----
-----NoError-----
情况七:
>>> try:
print("-----hello-----")
except Exception as ret: #捕捉到的异常放入ret中,并执行下面的代码
print("-----Error2-----")
print(ret)
else: #没有异常时,执行下面代码
print("-----NoError-----")
finally: #无论有没有异常,都执行下面的代码
print("程序执行完毕")
-----hello-----
-----NoError-----
程序执行完毕
异常的传递:假如test1()调用test2(),test2()中出现异常,但是test2()中没有对异常的处理,那么异常将传递给test1(),test1()中也没有异常的处理,那么异常传递给test3(),test3()会处理,不会交给系统。
def test3( ):
try:
print("-----3-----")
test1( )
except Exception:
print("-----Error----")