Python学习笔记之异常
生活随笔
收集整理的這篇文章主要介紹了
Python学习笔记之异常
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python用異常對象來表示異常情況,如果異常對象未被處理或捕捉,程序就會回溯(traceback)中止執行。
異常可以在出錯時自動引發,也可以主動引發。
異常被引發后如果不被處理就會傳播至程序調用的地方,直到主程序(全局作用域),如果主程序仍然沒有異常處理,程序會帶著棧跟蹤終止。
raise:引發異常
>>> raise Exception Traceback (most recent call last):File "<pyshell#1>", line 1, in <module>raise Exception Exception? >>> raise Exception("error!!!")
? Traceback (most recent call last):
? File "<pyshell#2>", line 1, in <module>
? raise Exception("error!!!")
? Exception: error!!!
常見內建異常類:
| 類名 | 描述 |
| Exception | 所有異常的基類 |
| AttributeError | 特性引用或賦值失敗時引發 |
| IOError | 試圖打開不存在文件(包括其他情況)時引發 |
| IndexError | 在使用序列中不存在的索引時引發 |
| KeyError | 使用映射中不存在的鍵引發 |
| NameError | 找不到名字(變量)時引發 |
| SyntaxError | 在代碼為錯誤形式時引發 |
| TypeError | 在內建操作或者函數應用于錯誤類型的對象引發? |
| ValueError | 在內建操作或者函數應用于正確的對象,但是該對象使用不合適的值引發 |
| ZeroDivision | 在除法或者模除操作的第二個參數為0時引發 |
?
自定義異常類:繼承自Exception
class DefException(Exception):pass?
捕捉異常:使用try/except語句實現>>> try:
x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except ZeroDivisionError:print("Error")The first num:5 The second num:0Error >>> try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except ZeroDivisionError:print("Error") except ValueError:print("TypeError")The first num:5 The second num:o TypeError
?
用一個塊捕捉多個異常:
>>> try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except (ZeroDivisionError,ValueError):print("Error")The first num:5 The second num:0 Error?
捕捉對象:
>>> try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except (ZeroDivisionError,ValueError) as e:print(e)The first num:5 The second num:0 division by zero?
捕捉所有異常:
try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y) except:print("some errors") The first num:5 The second num: some errors這種方式會捕捉用戶中止執行的企圖,會隱藏所有程序員未想到并且未做好準備的錯誤。
?
對于異常情況進行處理:
?
#在輸入不合法時循環,直到合法值出現退出循環 while True:try:x = int(input("The first num:"))y = int(input("The second num:"))print(x/y)except:print("Error")else:break#運行結果 The first num:5 The second num:0 Error The first num:6 The second num:3 2.0?
?finally子句:用在可能的異常后進行清理,不管是否有異常都要執行。在同一個try語句中,不可以和except使用。
x = None try:x = 1/0 finally:print("cleaning")del x#結果 cleaning Traceback (most recent call last):File "input.py", line 4, in <module>x = 1/0 ZeroDivisionError: division by zero***Repl Closed***?
可以在一條語句中組合使用try,except,else,finally
try:x = 1/0else:print("done") finally:print("cleaning")#運行結果 cleaning***Repl Closed***?
轉載于:https://www.cnblogs.com/HJhj/p/7423454.html
總結
以上是生活随笔為你收集整理的Python学习笔记之异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浦发银行腾讯围棋联名信用卡怎么样?这些权
- 下一篇: 老齐python-基础3(列表)