python raise和assert的區別
阿新 • • 發佈:2017-10-27
自定義 exception def 完成 error book utf __str__ class
python中raise和assert的區別
一、使用raise拋出異常
python可以自動觸發異常,raise(內置函數)的定義為顯示的拋出異常,用戶可以使用raise進行判斷,顯式的引發異常,raise執行後程序將不再向下執行。
式例:
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = ‘40kuai‘ books_dict = {‘name‘:‘python‘,‘pages‘:390} key = input(‘查看屬性:‘) if key in books_dict: print(books_dict[key]) else: raise KeyError # 當要查詢的屬性不在字典中時會觸發異常
raise也可以用戶創建自定義的異常
#!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = ‘40kuai‘ class helei(Exception): # 繼承 Exception def __init__(self, msg): self.message = msg def __str__(self): # 被print調用時執行,可以不寫 return self.message if __name__ == ‘__main__‘: try: raise helei(‘我的異常‘) # 觸發異常 except helei as e: print(e)
二、assert使用
assert語句用於檢測某個條件表達式是否為真。assert語句又稱為斷言語句,即assert認為檢測的表達式永遠為真。
斷言用來指定某一操作必須為真。也可以在腳本執行時加上python -O 參數來跳過assert檢測。
可以使用assert False 來顯示代碼編寫未完成
python raise和assert的區別