2011-05-20 86 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应该有责任终止,而不是模块。

如果您想将这些模块导入到另一个项目中,并且您的没有想要终止异常应用程序,该怎么办?