python Django异常处理

2024-05-14 21:29:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个查询,其中使用了exception:

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

pass在这里做什么?我的意思是如果我的整个视图依赖于sm,而它没有得到sm。我应该手动设置“sm”吗

except Something.DoesNotExist:
    sm = anything

我只想知道如果pass找不到所查询的内容该怎么办。如果它只是忽略了except后面的部分,然后更进一步,那又有什么意义呢,因为我的整个观点依赖于sm

谢谢


Tags: 视图id内容getobjectsexceptionpass手动
3条回答

^{} is a null statement that does nothing,当您由于缩进规则需要语句,但还不想编写代码时,它非常有用。你知道吗

如果您删除它以获得代码:

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

它将因语法错误而失败。你知道吗


至于如果找不到要查找的项怎么办,这在很大程度上取决于代码的其余部分。但是,在这种情况下,最好向某人显示一个错误,因为发生了这样的情况-您请求了一个不存在的项。你知道吗

上面上下文中的关键字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
    ...

passno-op,什么也不做。它需要在except块中以符合python语法。你知道吗

相关问题 更多 >

    热门问题