1. 程式人生 > >python raise和assert的區別

python raise和assert的區別

自定義 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的區別