python中的错误处理程序

时间:2012-05-17 12:39:21

标签: python error-handling

是否可以在python中注册自定义错误处理程序 - 如PHP中的http://php.net/set_error_handler? 我想从我的代码中的任何地方触发错误,然后收到关于它的电子邮件通知(以及日志记录,以及我需要在处理程序中实现的任何其他内容) - 我在PHP中使用了这样的模式。

也许我不太了解python的概念(因为我是python中的新手)。谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

我不知道PHP中究竟有哪些错误处理程序,我将从python的角度来看这个

在python中我们有例外,它们的名字非常特殊。当出现问题或者我们期待其他事情或甚至我们只想失败时,我们会抛出异常。可以在任何时候抛出异常,然后以例如

来捕获
a = 'int'
b = int(a)

会抛出一个异常,因为你不能将'int'转换为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.")

现在我们使用自定义消息获取自定义异常