標籤:操作 enc please 特徵 失敗 win and 計算 內容
# 異常處理
# 異常
-異常是指在文法邏輯正確啟動並執行前提下,出現的問題
-在python中,異常是一個類,可以處理和使用
BaseException所有異常的基類
SystemExit解譯器請求退出
KeyboardInterrupt使用者中斷執行(通常是輸入^C)
Exception常規錯誤的基類
StopIteration迭代器沒有更多的值
GeneratorExit產生器(generator)發生異常來通知退出
StandardError所有的內建標準異常的基類
ArithmeticError所有數值計算錯誤的基類
FloatingPointError浮點計算錯誤
OverflowError數值運算超出最大限制
ZeroDivisionError除(或模數)零 (所有資料類型)
AssertionErrorAssert 陳述式失敗
AttributeError對象沒有這個屬性
EOFError沒有內建輸入,到達EOF 標記
EnvironmentError作業系統錯誤的基類
IOError輸入/輸出操作失敗
OSError作業系統錯誤
WindowsError系統調用失敗
ImportError匯入模組/對象失敗
LookupError無效資料查詢的基類
IndexError序列中沒有此索引(index)
KeyError映射中沒有這個鍵
MemoryError記憶體溢出錯誤(對於Python 解譯器不是致命的)
NameError未聲明/初始化對象 (沒有屬性)
UnboundLocalError訪問未初始化的本地變數
ReferenceError弱引用(Weak reference)試圖訪問已經記憶體回收了的對象
RuntimeError一般的執行階段錯誤
NotImplementedError尚未實現的方法
SyntaxErrorPython 語法錯誤
IndentationError縮排錯誤
TabErrorTab 和空格混用
SystemError一般的解譯器系統錯誤
TypeError對類型無效的操作
ValueError傳入無效的參數
UnicodeErrorUnicode 相關的錯誤
UnicodeDecodeErrorUnicode 解碼時的錯誤
UnicodeEncodeErrorUnicode 編碼時錯誤
UnicodeTranslateErrorUnicode 轉換時錯誤
Warning警告的基類
DeprecationWarning關於被棄用的特徵的警告
FutureWarning關於構造將來語義會有改變的警告
OverflowWarning舊的關於自動提升為長整型(long)的警告
PendingDeprecationWarning關於特性將會被廢棄的警告
RuntimeWarning可疑的運行時行為(runtime behavior)的警告
SyntaxWarning可疑的文法的警告
UserWarning使用者代碼產生的警告
以上內容引用自“https://www.cnblogs.com/zln1021/p/6106185.html”,在此表示感謝
#異常處理
-不能保證程式永遠正確運行
-但是,必須保證程式的問題在最壞的情況下得到妥善處理
-python的異常處理模組全部文法為:
try:
嘗試實現某個操作
如果沒出現異常,任務就可以完成
如果出現異常,將異常從代碼塊扔出去嘗試解決異常
except 異常類型1:
解決方案1:嘗試在此處處理異常
except 異常類型2:
解決方案2:嘗試在此處處理異常
except異常類型3:
解決方案:針對多個異常使用相同的處理方式
except:
解決方案:所有異常的解決方案
else:
如果沒有任何異常,將會執行此代碼
finally:
無論有無異常都要執行的代碼
-處理流程
1、執行try下面的語句
2、如果出現異常,則在except語句裡尋找對應異常進行處理
3、如果沒有異常,則執行else語句
4、最後,無論有無異常,都會執行finally語句
-注意:除except(至少含有一個)以外,其他的都是可選的
#簡單異常案例-1#給出提示資訊try: num int(input("please input your number:")) m = 100/num print("計算結果是{0}".format(m))#捕獲異常後,把異常執行個體化,出錯資訊會在執行個體裡#注意以下寫法#以下語句是捕獲ZeroDivisionError異常並執行個體化e except ZeroDivisionError as e: print("你輸入的值有誤") print(e) #exit是退出程式 exit() #簡單異常案例-2#給出提示資訊try: num int(input("please input your number:")) m = 100/num print("計算結果是{0}".format(m))#不知道會發生什麼異常,可以用Exception,所有的異常都繼承Exception #而且,此語句只能放在最後一個用於排除未知錯誤except Exception as e: print("不知道是哪兒錯了,反正有錯") print(e) #exit是退出程式 exit()
-注意,在處理異常的時候,一旦攔截到某個異常,則不繼續往下查看,直接進行了finally語句或者其他大語句
# 使用者手動引發異常-當某些情況下,使用者希望自己引發一個異常的時候,可以使用-raise 關鍵字引發異常#案例-1try: print("i love siqi") print(2.34574) #手動引發一個異常 #注意文法 raise ValueError print("有錯")except NameError as e: print("有錯1")except ValueError as e: print("有錯2")except Exception as e: print("有錯3")finally: print("必須被執行的語句") #案例-2#自己定義異常#需要注意:自訂異常必須是系統異常的子類class HouziError(ValueError) psstry: print("i love siqi") print(2.34574) #手動引發一個異常 #注意文法 raise ValueError print("有錯")except NameError as e: print("有錯1")except HouziError as e: print("猴子有錯")except Exception as e: print("有錯3")finally: print("必須被執行的語句") # else語句案例try: num int(input("please input your number:")) m = 100/num print("計算結果是{0}".format(m))except Exception as e: print(str(e))else: print("No Exception")finally: print("必須被執行的語句")
# 關於自訂異常
-只要是raise異常,則推薦自訂異常
-在自訂異常的時候。一般包含以下內容:
-自訂發生異常的異常代碼
-自訂發生異常後的問題提示
-自訂發生異常的行數
-最終目的是,一旦發生異常,方便迅速找到錯誤的位置所在
python-異常處理-20