Попробуйте / кроме синтаксиса в Python с двумя одинаковыми исключениями - PullRequest
1 голос
/ 11 мая 2011

Я проверяю электронные письма по двум спискам - списку доменов и списку отдельных писем. Как бы мне построить следующий оператор try -

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 ]

7 голосов
/ 11 мая 2011

Похоже, вы ищете что-то вроде:

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"

В этом случае, вероятно, нет необходимости в исключениях.

2 голосов
/ 11 мая 2011

Почему бы не определить два исключения: DomainDoesNotExists, EmailDomainDoesNotExists?

try: 
    'email in email_list'
except DomainDoesNotExists:
    ...
except EmailDomainDoesNotExists:
    ...

Невозможно сделать то, что вы хотите, только с одним типом исключения (например, DoesNotExists).

Но вам лучше послушать @Greg Hewgill, в этом случае вам не нужны исключения

0 голосов
/ 11 мая 2011

Трудно понять, что вы пытаетесь сделать. Ваши заглавные буквы являются проблемой. Когда вы ловите исключения, переходите от самого конкретного к общему. Первый блок обработчика обрабатывает исключение и выводит вас из последовательности, исключающей попытку.

try:
    yourEmailRoutine
except DomainDoesNotExist:
    ##code to be carried out if domain does not exist...
    print "The domain %s does not exist." % yourDomainName

Поскольку электронные письма часто искажены, вы можете использовать предложение Грега, чтобы справиться с этим в прогрессии if-elif-else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...