基本上,我的目标最好用例子来描述:
查看
define test_view()
try
# some code block
except error_type_1:
status = 428
# do something
except error_type_2:
# do something else
except # any other mistake
# print the error to console
finally
return smth
我的问题是,python中是否存在任何默认块 - 除了如果知道视图中存在异常,我可以获取Django打印到控制台的自定义错误消息?据我所知,else
阻止不适用于此。这个问题背后的基本原理是,在我用try-except块包围我的代码之后,很难理解在错误上升不是我预期的结果的情况下代码中发生了什么。
答案 0 :(得分:1)
通过在return
块中使用finally
语句,您可以有效地隐藏错误。通常,在finally
块之后会重新启动任何未捕获的异常,但return
语句会在此之前返回该函数的控制权。最好将return语句移出finally
块,让意外错误自然传播:
def test_view():
try
# some code block
except error_type_1:
status = 428
# do something
except error_type_2:
# do something else
return smth
您可以使用bare except子句或捕获Exception
来捕获所有异常,但通常不建议这样做,因为它可以轻松隐藏调试问题所需的详细信息:
try:
do_something()
except:
handle_exception()
try:
do_something()
except Exception as exc:
handle_exception(exc)
当视图函数引发异常时,Django会为您执行此操作并为您提供详细的错误页面,其中包括错误消息,回溯,局部变量等。