在Python中,如何在try/except
语句中两次使用except
具有相同异常名称的块两次,而无需将代码包成多个try/except
块?“except”语句与参数两次具有相同的异常类
简单的例子(这里每个通话pages.get
可能引发异常):
try:
page = pages.get(lang=lang)
except Page.DoesNotExist:
if not lang == default_lang:
page = pages.get(lang=default_lang)
else:
raise Page.DoesNotExist
except Page.DoesNotExist:
page = pages[0]
现在,在我的Django应用程序我处理这样的(但我不想“额外” try
阻止这里):
try:
try:
page = pages.get(lang=lang)
except Page.DoesNotExist:
if not lang == default_lang:
page = pages.get(lang=default_lang)
else:
raise Page.DoesNotExist
except Page.DoesNotExist:
page = pages[0]
任何处理代码优于上述表示赞赏! :)
谢谢。
为什么要这么做? – spinlok
你不能。也许你可以告诉我们为什么你认为你需要这样做,所以我们可以告诉你为什么你不需要这样做 –
我同意,我不认为这是一个好主意。这意味着你有两个由同一个事物触发的代码路径,做不同的事情。将try/catch看作if/else语句。 –