在django中,什么会导致object.get()中无法捕获的异常?

时间:2012-08-21 08:30:36

标签: django

如果找到主键,则此代码打印'a''b''e'。如果不是,则仅打印“a”。是什么导致异常被吞噬?

def foo(request, e_pk):
    try:
        pprint('a')
        facet = models.EntryFacet.objects.get(pk=e_pk)
        pprint('b')
    except models.EntryFacet.DoesNotExist:
        pprint('c ' + sys.exc_info()[0])
    except ObjectDoesNotExist:
        pprint('d ' + sys.exc_info()[0])
    pprint('e')
    return render_to_response(...)

环境:django 1.3,Linux。 settings.py有DEBUG = True TEMPLATE_DEBUG = DEBUG

1 个答案:

答案 0 :(得分:1)

当你尝试

print('c ' + sys.exc_info()[0])

它引发TypeError:无法连接'str'和'type'对象 所以你应该使用:

print('c %s' % sys.exc_info()[0])

另请参阅get_object_or_404