python常見異常以及處理方法

2021-10-18 10:28:47 字數 2067 閱讀 3348

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...