在python中混淆异常行为

时间:2012-06-28 16:43:30

标签: python django exception exception-handling

我有一些类似于此的django代码(这是python 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")

问题是“这不应该打印”的行仍在打印中。我很困惑。我觉得我可能忽略了一些非常简单的事情,但目前可能有一些隧道视野。提前谢谢。

更新:如果我删除嵌套的try块,则在调用抛出异常的方法下面的打印仍会打印。

1 个答案:

答案 0 :(得分:2)

我想通了,这个方法里面有一个试试块,但是我没有提出来。在method_that_throws_exception()中的异常处理程序中添加raise修复了我的问题。