Python中处理两个相同异常的try/except语法

1 投票
3 回答
834 浏览
提问于 2025-04-16 17:24

我正在检查电子邮件,比较两个列表——一个是域名列表,另一个是单个电子邮件地址的列表。
我该如何构建下面的尝试语句呢——

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

为什么不定义两个异常:DomainDoesNotExistsEmailDomainDoesNotExists 呢?

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"

在这种情况下,可能不需要使用异常处理。

撰写回答