我在使用异常的地方有一个查询:

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


在这里通过是做什么的?我的意思是,如果我的整个视图都依赖sm而不是sm怎么办?我应该手动设置“ sm”吗?

except Something.DoesNotExist:
    sm = anything


我只是想知道如果找不到要查询的内容,该怎么做。如果它只是忽略了except之后的部分,然后继续下去,那又有什么意义,因为我的整体看法取决于sm

谢谢

最佳答案

在上述上下文中,关键字pass会忽略DoesNotExist异常。如果您的程序依赖于代码中某个地方sm的存在,则应将其设置为None并在需要的地方检查其值。

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

if sm:
    ...


另外,您可以在try / catch块的else部分中完成您的工作。仅当try块中的代码未引发异常时才执行该命令。

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

关于python - python django异常处理,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28535523/

10-12 18:16