2012-06-28 3 views
0

У меня есть Джанго код, который напоминает это (это питон 2.7.1)запутанного поведение исключения питона

try: 
    a = some_model.objects.get(some_field='foo') #this could except if for some reason it doesn't exist 
    method_that_throws_exception() #it won't reach this if we get a DoesNotExist 
except some_model.DoesNotExist: 
    #if it doesn't exist create it then try again 
    a = some_model.objects.create(....) 
    try: 
     method_that_throws_exception() #this time lets say another exception is raised by method 
     print 'this should not print right?' 
    except Exception as e: 
     logging.error("error msg here") 

Проблема заключается в строке «это не должно печатать» по-прежнему печатаются. Я смущен этим. Я чувствую, что я, вероятно, не замечаю что-то очень простое, но может иметь какое-то туннельное видение на данный момент. Заранее спасибо.

Обновление: также, если я удаляю вложенную попытку, заблокируйте печать под вызовом метода, который выдает исключение, все еще печатает.

+0

Почему вы используете 2x 'except'? – Aprillion

+0

это была опечатка, извините. – mikec

+0

Если объект существует, вы хотите, чтобы исключение, вызванное вашим методом, было необработанным? – Aprillion

ответ

2

Я понял, у метода был блок попыток внутри него, который я не поднимал. добавив повышение в обработчик исключения из метода method_that_throws_exception(), исправил мою проблему.

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