拋出例外
assert陳述句
當assert陳述句后面的內容是假時,終止程式報出例外(AssertionError),
1 ls=[1,2] 2 assert len(ls)>1 3 ls.pop() 4 assert len(ls)>1
raise陳述句
raise [Exception[,args[,traceback]]]
Exception是例外型別,可以使標準例外中的任何一種,也可以是自己設定的,args是自己提供的例外引數,最后一個引數為跟蹤例外物件,一般很少用,
raise Exception("wrong")
例外可以有引數,在拋出時會說明自己寫入的錯誤原因,
撰寫Exception的常用模板:
class CustomError(Exception): def __init__(self,ErrorInfo): super().__init__(self) self.errorinfo=ErrorInfo def __str__(self): return self.errorinfo
這樣就可以使用自己撰寫的例外去完成這個拋出例外的操作,
例外種類
IndexError(索引超出),AttributeError(嘗試訪問未知的物件屬性),KeyError(字典中查找一個不存在的關鍵字),NameError(嘗試訪問一個不存在的變數)
OSError(作業系統產生例外,例:打開不存在的檔案),SyntaxError(Python語法錯誤),ZeroDivisionError(除數為零)
捕獲例外
try-except陳述句
try: 檢測范圍 except Exceptiom[as reason]: 出現例外后的處理代碼 try: f=open('1.txt') print(f.read()) f.close() except OSError: print('wrong')
針對不同的例外可以設定多個except,同時如果想了解具體例外情況,可以進行reason的輸出,
except OSError as reason: print("wrong:"+str(reason))
對多個例外也可以進行統一處理,捕獲所有例外
````#捕獲多個例外 except OSError as reason: print(''+str(reason)) except TypeError as reason: print(''+str(reason)) ````#捕獲所有例外 except: print("error") ````
try-finally陳述句
finally是用來收拾殘局的,比如在打開檔案后,因為其他的陳述句出現錯誤,而導致檔案不能正常關閉,那么可能導致檔案內容丟失,所以我們需要finally收拾殘局,
try: f=open("1.txt") print("success") sum=1+'1' f.close() except: print("error") finally: f.close()
else可以跟在while,try,for后面,但是如果break或者出現例外,else將不會執行,
使用with陳述句打開檔案不會出現忘記關閉的情況,
try: with open("1.txt"): for each_line in f: print(each_line) except OSError as reason: print("error")
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/140476.html
標籤:Python
