我有一个按计划运行的 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()
这取决于您在尝试中所做的工作。在该代码中创建并引发异常。可以将异常的消息设置为 93 或其他任何消息。
尝试在调试器中评估整个异常,或单步执行正在运行的代码,直到获得异常,并查看创建/引发异常的上下文。这至少会让你了解代码/模块在失败时在做什么。
我的猜测是try中运行的代码编写或维护得不好。尝试使用其他模块,或在此处发布有关它的更多详细信息。
更新:
如果您的堆栈跟踪为您提供了 KeyError,那么您正在执行的代码将抛出一个 KeyError 异常,该异常未由代码更深处的 except 块处理,这意味着它要么写得不好,要么使用不当。问题很可能出在您的"做某事"中
而不是使用smtplib。SMTP 你应该使用 Yagmail。它更易于使用:
import yagmail
yag = yagmail.SMTP(username, password)
yag.send(emailto, subject = "I now can send an attachment", contents = fileToSend)