python 3 中是否有与 PHP 的set_error_handler函数等效的函数?在 python 脚本中使用这个等价物是个好主意还是有更好的解决方案?
我喜欢 set_error_handler 的地方在于,我可以为它分配一个功能,例如在出现问题时记录和/或通过电子邮件发送给我。然后我可以在我的代码中使用 trigger_error,error_handler 函数将向我报告发生了什么以及发生在哪里。任何想法如何在python中替换它?
python 3 中是否有与 PHP 的set_error_handler函数等效的函数?在 python 脚本中使用这个等价物是个好主意还是有更好的解决方案?
我喜欢 set_error_handler 的地方在于,我可以为它分配一个功能,例如在出现问题时记录和/或通过电子邮件发送给我。然后我可以在我的代码中使用 trigger_error,error_handler 函数将向我报告发生了什么以及发生在哪里。任何想法如何在python中替换它?
我认为您正在搜索sys.excepthook。它也被cgitb
模块使用。
或者你可以试试我写的库诊断。它尚不支持电子邮件,但请随时为您的提案打开一个问题或发送拉取请求:)
AFAIK Python uses mainly exceptions to handle errors and thus you should try to catch them instead of using a construct like set_error_handler. Do something like this:
try:
code that might fail...
except:
handle errors...
请参阅用于处理警告的 python 库的警告,该库还链接到日志库中的captureWarnings。
然而,大多数其他问题都作为异常抛出,您可以尝试并在您认为合适的时候捕获它们。
import cgitb() cgitb.enable() 对于 CGI 使用,也可以使用 cgitb 模块,它会打印出非常详细的错误信息以供调试使用:
请改用 Python 异常处理机制 ( try/except
)。它更加灵活和细粒度;您可以捕获仅由一行代码引起的错误(例如,IOError
因为未找到文件),或者来自整个程序的错误(就像set_error_handler
那样)。
对于 CGI 使用,您还可以使用该cgitb
模块,该模块将打印出非常详细的错误消息以供调试使用:
import cgitb
cgitb.enable()