2011-05-20 72 views
8

我已經在我的項目這些文件:Python的 - 好的做法捕捉錯誤

- main.py 
- module1.py 
- module2.py 

main是主文件,這將是直接在控制檯執行。

module1將導入main並拋出Module1Exception

module2將被導入到module1,拋出Module2Exception 並使用LIB拋出NormalExceptionCriticalException例外。

關於所有異常應用程序應退出。

哪個選項是最有效的方法來捕捉這些錯誤?
一個)所有異常將在main捕捉,打印消息並退出
B)允許允許模塊捕捉異常(module2捕獲LIB異常,module1捕捉僅Module2Exceptionmain捕捉Module1Exception),打印消息並退出。
C)b,除了模塊將不會退出,而是返回False並退出將在被稱爲main

編輯:

這將是服務器端程序,運行在後臺。我預計未來我將使用多臺具有全局日誌監控的服務器,如flume或scribe。異常必須被捕。這些文件僅是示例。事實上,我正在編寫一個作爲一種服務器的大型應用程序。在這一刻,我編寫了用於加載和解析配置文件的模塊。在這種情況下,如果發生任何異常,腳本應該退出。只有在這種情況下。加載配置文件並通過測試後,該腳本將保持無人值守。

+3

你爲什麼抓住他們?除非有**理由趕上他們,否則你應該讓他們傳播。 「打印消息和退出」是在你根本沒有編寫任何異常處理代碼時發生的情況。你在問什麼? – 2011-05-20 03:01:14

+1

例如,如果我在讀取文件時收到'IOError',我想通知用戶哪個文件導致了異常。我也喜歡漂亮的消息,而不是原始的異常數據:) – Galmi 2011-05-20 03:07:36

+0

@Galmi:「我喜歡漂亮的消息,而不是原始的異常數據」。不是非常有用的信息。你得到IOError。那又怎麼樣?停止?改變一些,然後再試一次?捕捉異常的最「有效」的方式取決於(a)什麼例外和(b)你將如何處理異常。沒有單一的,簡單的規則。這取決於你要做什麼。 – 2011-05-20 09:52:58

回答

14

main應該有責任終止,而不是模塊。

如果您想將這些模塊導入到另一個項目中,並且您的沒有想要終止異常應用程序,該怎麼辦?