標籤:語法錯誤 ice decode 屬性 作用 建立 lower imp 地方
ParisGabriel 每天堅持手寫 一天一篇 決定堅持幾年 為了夢想為了信仰
Python人工智慧從入門到精通
補充:包的相對匯入 只對後兩種匯入方式有用
包的相對匯入 只對後兩種匯入方式有用
異常(基礎)except:
什麼是錯誤:
是指由於邏輯或文法等導程式無法正常執行的問題
什麼是異常:
是程式出錯的標識符的一種狀態
當異常發時 程式不會再向下執行,而轉去調用此函數的地方
待處理此錯誤並恢複為正常狀態
異常的作用:
用作訊號, 通知上層調用者有錯誤產生需要處理
try 語句:
兩種文法:
ry-except語句(接受異常通知)
try-finally語句
try-except 文法 :
try:
可能觸發異常的語句
except 錯誤類型1[as 變數1]:
異常處理語句2
except 錯誤類型2[as 變數2]:
異常處理語句2
except (錯誤類型3, 錯誤類型4,...)[as 變數3]:
異常處理語句3
......
except:
異常處理語句(其他)(匹配所有類型錯誤)
else:
未發生異常語句(可以沒有此語句 沒有發成異常時調用)
finlly:
最終語句
作用:
嘗試捕獲異常, 將成語由異常狀態轉為正常狀態並正常執行
樣本:
tar-except.py
說明:
1. as 子句是用於綁定錯誤對象的變數,可以省略
2. except 子句可以有一個或多個,但至少要有一個
3. else 子句最多隻能有一個,也可以省略不寫
4. finally 子句最多隻能有一個,也可以省略不寫
5. else 子句將在try沒有出現異常時執行
6. finally子句的語句在任何情況下都會被執行
try-finally文法:
try:
可能觸發異常的語句
finally:
最終語句
說明:
1.finally子句不可以省略
2.一定不存在except子句
作用:
通常try-finally語句來做觸發異常時必須要處理的事情
無論異常是否發生, finally子句一定會被執行
注意:
try-finally 語句不會改變程式的(正常/異常)狀態
raise 語句:(發起異常通知)
作用:
觸發一個錯誤, 讓程式進入異常狀態
文法:
raise 異常類型
或
raise 異常對
執行個體:
assert Assert 陳述式:
文法:
assert 真值運算式, 錯誤資料(通常是字串)
作用:
當真值運算式為False時, 用錯誤資料建立一個AssertionError
類型的錯誤, 並進入異常狀態
等同於:
if 真值運算式 == false
raise AssertrtionError(錯誤資料)
執行個體:
小結:
異常處理語句(4條):
try-except 語句:
用於接受異常通知, 捕獲異常
try-finally 語句:
執行必須執行的語句
raise 語句:
發送異常通知, 並進入異常狀態
assert 語句:
根據條件選著性的發送 AssertionError類型的異常通知
為什麼要處理異常機制:
在程式調用層數比較深的時候, 向主調用函數傳遞錯誤資訊 需要層層return返回
比較麻煩, 用異常處理機制可以較簡單的傳遞錯誤資訊
Python中全部的錯誤類型:
Python全部的錯誤類型
| 錯誤類型 |
說明 |
| 以下內容必講 |
|
| ZeroDivisionError |
除(或模數)零 (所有資料類型) |
| ValueError |
傳入無效的參數 |
| AssertionError |
Assert 陳述式失敗 |
| StopIteration |
迭代器沒有更多的值 |
| IndexError |
序列中沒有此索引(index) |
| IndentationError |
縮排錯誤 |
| OSError |
輸入/輸出操作失敗 |
| ImportError |
匯入模組/對象失敗 |
| NameError |
未聲明/初始化對象 (沒有屬性) |
| AttributeError |
對象沒有這個屬性 |
| |
|
| GeneratorExit |
產生器(generator)發生異常來通知退出 |
| TypeError |
對類型無效的操作 |
| KeyboardInterrupt |
使用者中斷執行(通常是輸入^C) |
| OverflowError |
數值運算超出最大限制 |
| FloatingPointError |
浮點計算錯誤 |
| BaseException |
所有異常的基類 |
| SystemExit |
解譯器請求退出 |
| Exception |
常規錯誤的基類 |
| StandardError |
所有的內建標準異常的基類 |
| ArithmeticError |
所有數值計算錯誤的基類 |
| EOFError |
沒有內建輸入,到達EOF 標記 |
| EnvironmentError |
作業系統錯誤的基類 |
| WindowsError |
系統調用失敗 |
| LookupError |
無效資料查詢的基類 |
| KeyError |
映射中沒有這個鍵 |
| MemoryError |
記憶體溢出錯誤(對於Python 解譯器不是致命的) |
| UnboundLocalError |
訪問未初始化的本地變數 |
| ReferenceError |
弱引用(Weak reference)試圖訪問已經記憶體回收了的對象 |
| RuntimeError |
一般的執行階段錯誤 |
| NotImplementedError |
尚未實現的方法 |
| SyntaxError Python |
語法錯誤 |
| TabError |
Tab 和空格混用 |
| SystemError |
一般的解譯器系統錯誤 |
| UnicodeError |
Unicode 相關的錯誤 |
| UnicodeDecodeError |
Unicode 解碼時的錯誤 |
| UnicodeEncodeError |
Unicode 編碼時錯誤 |
| UnicodeTranslateError |
Unicode 轉換時錯誤 |
| 以下為警告類型 |
|
| Warning |
警告的基類 |
| DeprecationWarning |
關於被棄用的特徵的警告 |
| FutureWarning |
關於構造將來語義會有改變的警告 |
| OverflowWarning |
舊的關於自動提升為長整型(long)的警告 |
| PendingDeprecationWarning |
關於特性將會被廢棄的警告 |
| RuntimeWarning |
可疑的運行時行為(runtime behavior)的警告 |
| SyntaxWarning |
可疑的文法的警告 |
| UserWarning |
使用者代碼產生的警告 |
| 詳見:help(builtins) |
ParisGabriel:Python全棧工程師(0基礎到精通)教程 第二十一課(包、模組 的匯入)