gpt4 book ai didi

python - 在 flask 中,我应该手动捕获 View 中所有可能的错误吗?

转载 作者:太空狗 更新时间:2023-10-30 02:13:01 36 4
gpt4 key购买 nike

我是 Flask 的新手,在编写 View 时,我徘徊是否应该捕获所有错误。如果我这样做,大多数 View 代码应该用 try...except 包装。我认为这不优雅。

例如。

@app.route('/')
def index():
try:
API.do()
except:
abort(503)

我应该这样编码吗?如果没有,服务会不会崩溃(uwsgi+lnmp)?

最佳答案

你只能捕获你能处理的。 “处理”一词的意思是“做一些有用的事情”,而不仅仅是“打印一条消息然后死去”。打印和模具已经由异常机制处理,并且可能比您做的更好。

例如,这没有有效地处理异常:

denominator = 0
try:
y = x / denominator
except ZeroDivisionError:
abort(503)

您无能为力,abort 是多余的,因为未捕获的异常无论如何都会导致发生这种情况。这是一个有用的处理示例:

try:
config_file = open('private_config')
except IOError:
config_file = open('default_config_that_should_always_be_there')

但请注意,如果第二次打开失败,则没有任何用处,它会向上移动调用堆栈并可能停止程序。你永远不应该做的是有一个裸露的 except: 因为它隐藏了关于哪里出错的信息。当您收到“它所说的全部是 503”的缺陷报告并且您不知道 API.do() 中出了什么问题时,这将导致很多人挠头。

不能执行任何有用处理的 Try/except block 使代码困惑,并在视觉上掩埋了主要的执行流程。如果只是为了自己生成错误返回,无一异常(exception)的语言都会强制您检查每次调用是否有错误返回。异常的存在部分是为了消除代码噪音。

关于python - 在 flask 中,我应该手动捕获 View 中所有可能的错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11808809/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com