1、常見的異常
# 1、nameerror 未定義變數異常
print(a)
# 輸出:nameerror: name 'a' is not defined
# 2、indexerror 下標越界異常
list1 = [10]
print(list1[1])
# 輸出:indexerror: list index out of range
# 3、ioerror 輸入輸出異常
try:
raise ioerror # 假裝這裡有異常,一般針對難以復現的異常
except:
print('檔案讀寫錯誤')
# 4、filenotfounderror 找不到檔案異常
with open('./中國男足永奪世界冠軍.txt') as file1:
file1.read()
# 輸出:
# filenotfounderror: [errno 2] no such file or directory: 'd/中國男足永奪世界冠軍.txt'
# 5、zerodivisionerror 0不能作為分母異常
print(1/0)
# 輸出:
# zerodivisionerror: division by zero
2、處理異常
1、捕獲系統異常,轉化成使用者能看懂的提示
2、乙個標準的try-except語句,至少要有乙個except,也可以多個except,也可以"額外"加else語句與finally語句
3、如果事先不知道是什麼異常,可以直接用except,會捕獲所有的異常
try:
input = int(input('請輸入乙個整數:'))
print(1/input) # 有異常捕獲異常,沒異常正常執行
except zerodivisionerror: # 捕獲0作為分母的異常
print('0不可以作為分母')
except valueerror: # 捕獲輸入不是數字無法轉int的異常
print('您輸入的不是整數')
except: # 會捕獲所有的異常
print('程式出現異常')
else: # 當程式正常執行完畢,沒有出現異常,則執行一次else語句
print('沒有出現異常')
finally: # 無論程式是否出現異常,都會執行
print('程式執行完畢!')
3、手動丟擲異常
try:
raise ioerror # 假裝這裡有異常,一般針對難以復現的異常
except:
print('檔案讀寫錯誤')
4、斷言 assert,一般用於pytest框架
assert 1 == 2 # 當斷言的結果為真時,斷言不做事情,為假時,斷言生效丟擲異常
# 輸出:assertionerror
try:
assert 1 == 2
except assertionerror:
print('斷言為假.')
補充:
1、所有的異常都是exception的子類,或子類的子類
2、exception是object的子類的子類
print(nameerror.__bases__)
print(indexerror.__bases__)
print(lookuperror.__bases__)
print(exception.__bases__)
print(baseexception.__bases__)
# 輸出:
# (,)
# (,)
# (,)
# (,)
# (,)
異常以及任何處理異常初學
總結對於乙個程式設計師來說,我們會遇到一些異常 會導致程式中斷的指令流 例如乙個數不能除以0,在程式中這樣會產生異常,為了使程式能夠正常的執行下去,我們要處理異常 異常分為受檢異常和非受檢異常,異常類下有許多子類,子類一些還有許多繼承子類。受檢異常 就是寫成 會顯示錯誤,有可能發生異常 非受檢異常 ...
Mysql基本異常以及基本操作
mysqlintegrityconstraintviolationexception duplicate entry admin 2 for key idx unq usercode usertype 原因就是插入資料時,具有唯一約束條件的列的值有重複。違反唯一約束條件 務必確認插入資料主鍵或者具有...
PHP的異常以及異常存在的意義
php的try catch與其它語言的try catch相比有許多不同,而且用起來相對比較不爽。php中,如果你製作的站點相對較大,同時模組化,並且在錯誤處理機制上有一套自己的處理機制,可以嘗試使用try catch,否則,可以考慮不使用它。php的try catch是捕獲異常,但它卻無法捕獲php...