2015-02-16 4 views
1

У меня есть запрос, где я использовал исключение:питон Джанго обработка исключений

try: 
    sm = Something.objects.get(id=5) 
except Something.DoesNotExist: 
    pass 

Вот что значит пройти делать? Я имею в виду, что, если мой взгляд зависит от sm, и он не получает sm. Должен ли я установить «см» вручную, как:

except Something.DoesNotExist: 
    sm = anything 

Я просто хочу знать, что делать проходят делать, если не находите, Что запрос. Если это просто игнорировать часть после того, как за исключением и идти дальше, то какой смысл, потому что вся моя точка зрения зависит от sm

Спасибо

ответ

0

pass is a null statement that does nothing, и полезно, когда вам нужно заявление в связи с правилами отступа, но дон» еще не хочу писать код.

Если вы удалили его, чтобы иметь код:

try: 
    sm = Something.objects.get(id=5) 
except Something.DoesNotExist: 

Он потерпит неудачу с ошибкой синтаксиса.


А что делать, если вы не можете найти элемент, который вы ищете, что очень многое зависит от остальной части кода. Однако в таком случае было бы лучше показать ошибку кому-то, так как это произошло - вы запросили элемент, который не существует.

0

pass - no-op и ничего не делает. Он должен быть в блоке except для соответствия синтаксису python.

1

Ключевое слово pass в приведенном выше контексте игнорирует исключение DoesNotExist. Если ваша программа зависит от наличия в вашем коде sm, вы должны установить его на None и проверить его значение там, где оно вам нужно.

try: 
    sm = Something.objects.get(id=5) 
except Something.DoesNotExist: 
    sm = None 

if sm: 
    ... 

В качестве альтернативы, вы можете сделать свою работу в else часть вашего попробовать/поймать блок. Он выполняется только тогда, когда код в блоке try не вызывает исключения.

try: 
    sm = Something.objects.get(id=5) 
except Something.DoesNotExist: 
    # do something here.. 
else: 
    print sm 
    ... 
+0

Благодаря человек помог мне ... – gamer

+0

Кроме того, если вы просто хотите, чтобы через 404 исключение, если это что-то не нашли, используйте вместо этого: 'что-то = get_object_or_404 (что-то, ID = 5)' –

+0

@Aaeronn приветствуются. – ozgur

Смежные вопросы