我有一组 Python 脚本,这些脚本以嵌套方式调用函数。对于每个函数,我都有一个 try-except 语句来捕获所有异常并将它们打印出来。我希望能够发送一封包含执行期间遇到的所有异常的完整序列的电子邮件提醒。举个例子:
以下代码在最内部的
import sys
def SendAlert(ErrorMessage):
try:
#send email alert with error message
#[...]
except:
print(str(sys.exc_info()))
return(sys.exc_info())
def ParentFunction():
try:
#call ChildFunction
ChildResult = ChildFunction()
#do stuff with ChildResult
#[...]
return ParentResult
except:
ErrorMessage = str(sys.exc_info())
print(ErrorMessage)
SendAlert(ErrorMessage)
def ChildFunction():
try:
#do stuff
#[...]
return ChildResult
except:
print(str(sys.exc_info()))
return(sys.exc_info())
#main
if __name__ == '__main__':
Result = ParentFunction()
以下代码在最内部的
ChildFunction
遇到错误时的行为如下:
ChildFunction
遇到异常将打印其错误信息并将错误消息返回给ParentFunction
ParentFunction
将失败,因为ChildResult
包含一个错误消息而不是有效值ParentFunction
将触发异常并在电子邮件警报中发送自己的错误消息
除了来自ParentFunction
的错误消息外,我还希望电子邮件警报包含来自ChildFunction
的错误消息。请注意,我希望避免在ParentFunction
的 except 语句中传递ChildResult
变量,因为在实际情况下,我的程序有很多嵌套函数,这意味着需要将每个单个函数的结果变量传递到 except 语句中。
你怎么实现这个功能?是否有一种方法可以访问整个程序触发的完整错误序列?
谢谢
try ... except Exception as error
? - Chiheb Nexus