我试图在Python 3脚本中实现错误处理,方法是让SMTPlib库在遇到类似错误时发送电子邮件。
if value.isdigit() :
print ("Value is an integer")
else :
try:
server = smtplib.SMTP(email_server, email_port)
server.ehlo()
server.starttls()
server.login(email_login, email_pass)
server.sendmail("me@example.com", "me@example.com", message)
server.close()
sys.exit()
except:
print ("Error - Was unable to send email")
sys.exit()
如果值是整数,则此方法可正常工作,但如果不是,则电子邮件会正确发送,但错误消息也会打印到屏幕上。
为什么我的脚本也会运行except部分?
答案 0 :(得分:4)
sys.exit
是通过提出异常来实现的。在sys.exit
之后调用server.close
时,会捕获SystemExit
个异常。
这是一个小证据:
import sys
try:
print("hello")
sys.exit()
except:
print("exception!")
未遵守异常处理的基本规则。应该至少使用except Exception:
。记录或打印except Exception as err:
时更好err
。最好的方法是只处理源自try/except
守护的SMTP事务的异常。