Python中处理两个相同异常的try/except语法
我正在检查电子邮件,比较两个列表——一个是域名列表,另一个是单个电子邮件地址的列表。
我该如何构建下面的尝试语句呢——
Try: 'email in email_list'
Except DoesNotExist: 'domain in domain list' # if email not found
Except DoesNotExist: 'print error message' # if both email and domain not found
我需要使用什么样的语法来构建这个语句呢?
3 个回答
0
很难理解你想要做什么。你的大小写使用有点问题。当你捕捉错误时,应该从最具体的错误开始处理,再到一般的错误。第一个处理块会处理这个错误,然后就会跳出尝试-捕捉的过程。
try:
yourEmailRoutine
except DomainDoesNotExist:
##code to be carried out if domain does not exist...
print "The domain %s does not exist." % yourDomainName
因为电子邮件常常格式不正确,你可以考虑使用Greg的建议,用if-elif-else的方式来处理这个问题。
2
为什么不定义两个异常:DomainDoesNotExists
和 EmailDomainDoesNotExists
呢?
try:
'email in email_list'
except DomainDoesNotExists:
...
except EmailDomainDoesNotExists:
...
用一个异常类型(比如说 DoesNotExists)是无法实现你想要的效果的。
不过,你最好听听 @Greg Hewgill 的建议,在这种情况下其实不需要用到异常。
7
听起来你在寻找类似这样的东西:
if email in email_list:
# do something with email
elif domain in domain_list:
# do something with domain
else:
print "neither email nor domain found"
在这种情况下,可能不需要使用异常处理。