python中用try--except查找出代碼錯誤的使用


'''
#需求:當程序遇到問題不讓程序結束,而需要越過錯誤繼續向下執行

'''
'''
異常處理
try……except……else
格式:
try:
語句a
except 錯誤碼 as e:
語句1
except 錯誤碼 as e:
語句2
……
except 錯誤碼 as e:
語句n
else:#else語句可有可無
語句x
作用:用來檢測try語句塊中的錯誤,從而讓except語句捕獲錯誤
信息並處理
邏輯:當程序執行到try--except--else語句時
1、當try“語句a”執行出現錯誤時,會匹配第一個錯誤碼,如果
匹配上就執行對應“語句”
2、如果當try“語句”執行錯誤,但是except沒有匹配到異常,錯誤將會
被提交到上一層的try語句。或者到程序的最上層
3、如果當try"語句a"執行沒有出現錯誤,執行else下的“語句x”


'''
'''
try---except方法捕獲到錯誤就不執行后面程序了
a=0

try:
print(3/0)
print(x)
except ZeroDivisionError as e:
print("除數不能為0")
a+=1
except NameError as e:
print("沒有該變量")
a += 1
else:
print("代碼沒問題")
print("出現%d個錯誤"%(a))#顯示a=1 這方法只能報錯一個

#使用except而不適用任何的錯誤類型
a = 0
try:

print(3/0)
print(x)
except:
print("程序出現了異常")
a+=1
#使用except帶着多個異常
try:
print(3 / 0)
print(x)
except(ZeroDivisionError,NameError,TypeError):
print("出現了錯誤")

'''
'''
#特殊
# 1 錯誤異常是class(類),所有的錯誤都繼承自BaseException,
#所以在捕獲的時候,它捕獲了類型的錯誤,還把子類都捕獲了
try:
print(3/0)
except BaseException as e:
print("錯誤")
#錯誤 被前面捕獲了
except ZeroDivisionError as e :
print("除數不能為0")
'''
#2、跨越多層調用,main調用了func2,func2調用了func1,func1出現了錯誤
#只要main捕獲到了錯誤,就可以處理
def func1(num):
print(1/num)
def func2(num):
func1(num)
def main():
func2(0)
try:
main()
except:
print("****")


try……except……finally:
格式:
try:
語句a
except 錯誤碼 as e:
語句1
except 錯誤碼 as e:
語句2
……
except 錯誤碼 as e:
語句n
finally:
語句x
作用:無論語句a是否有錯,都執行finally后的語句x
try:
print(3/0)
except:
print("錯誤了")
finally:
print("來打我啊")#前面不管如何,都執行這句


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM