2012-05-17 63 views
1

是否有可能在python中註冊自定義錯誤處理程序 - 比如PHP中的http://php.net/set_error_handler? 我想觸發我的代碼中的任何地方的錯誤,然後有關於這個(和日誌,以及我需要在處理程序中實現的任何其他事情)的電子郵件通知 - 我在PHP中使用這種模式。python中的錯誤處理程序

也許我不明白python的概念(因爲我是python新手)。感謝幫助。

+1

您是否考慮過使用異常處理程序進行此操作? http://docs.python.org/tutorial/errors.html#handling-exceptions –

+0

看看這個 - http://stackoverflow.com/questions/1319615/proper-way-to-declare-custom-exceptions-現代python – Neil

+0

@瑪麗亞Zverina:目標是避免大結構 - 只是觸發錯誤,其餘的將與我的自定義處理程序(發送通知,添加日誌等)完成 似乎尼爾的建議將是有益的 – Serge

回答

2

不知道究竟我會看什麼樣的錯誤處理程序是在PHP這個但從

蟒蛇點在Python中,我們有例外,他們的名字例外。當出現問題時我們會拋出異常,或者我們正在等待其他事情,甚至我們只想失敗。異常可以在任何時候被拋出,再後來抓到例如

a = 'int' 
b = int(a) 

將拋出一個異常,因爲你不能將「詮釋」爲int,所以現在有異常處理要做到這一點

try: 
    b = int("int") 
except ValueError: 
    print "can't do that" 

現在你注意到我們吞下異常,並進行程序的執行,這並不總是最好的主意,有時候我們可能希望提高自己的異常並崩潰

class NotADecimalNumber(Exception): pass 
try: 
    b = int("a") 
except ValueError: 
    raise NotADecimalNumber("'a' is not a decimal number idiot.") 

現在我們通過自定義消息得到我們的自定義異常

+0

s /不是數字/不是十進制數字:-) – jimw

+0

編輯它以反映 –