为什么异常显示为数字?

时间:2018-01-17 20:33:53

标签: python python-2.7 try-catch

我有一个按计划运行的Python脚本,我已经设置了一个try/except块来捕获所有异常,并通过电子邮件向我发送异常消息,以便我可以知道出现了问题。

我正在观察一些奇怪的行为。对于我的脚本的每次执行,都会在消息所在的位置捕获异常:

93

当我将其打印到控制台时,此内容也是相同的。

当我删除try/except块时,我的代码没有抛出任何异常。有谁知道为什么try/except块的存在导致异常以及为什么它只是返回数字?

try:

    #do something

except Exception as ex:
    s = smtplib.SMTP('000.000.000.000',25)
    s.starttls()
    s.sendmail('email@email.com', 'email@email.com', 'General Exception in final_parse method       ' + str(ex.message))
    print str(ex.message)
    s.quit()

2 个答案:

答案 0 :(得分:0)

这取决于你在尝试中做了什么。在该代码中创建并引发异常。可以将例外消息设置为93或其他任何内容。

尝试在调试器中评估整个异常,或者逐步执行您在try中运行的代码,直到获得异常,并查看创建/引发它的上下文。这至少可以让您了解代码/模块在失败时正在做什么。

我的猜测是,在try中运行的代码没有很好地编写或维护。尝试使用其他模块,或在此处发布有关它的更多详细信息。

更新

如果你的堆栈跟踪给你KeyError,那么你正在执行的代码就会抛出一个KeyError异常,它不会被代码中更深层次的except块处理,这意味着它将被解析为'写得不好或使用不当。这个问题很可能发生在您的“做某事”

答案 1 :(得分:0)

您应该使用Yagmail,而不是使用smtplib.SMTP。它更容易使用:

import yagmail yag = yagmail.SMTP(username, password) yag.send(emailto, subject = "I now can send an attachment", contents = fileToSend)