在 web2py 中,假设我有以下 url:
www.example.com/customer/view/1
view()
它由控制器中的函数支持,customer
并显示数据库中 id 为 1 的客户。
在view
函数中,我想处理以下错误情况:
- 没有传递任何参数 (
/customer/view/
) -> raise 404 - 传递了一个非整数参数 (
/customer/view/apple
) -> raise 404 - 传递了一个整数参数,但数据库中不存在 (
/customer/view/999999
) -> raise 404 - 发生应用程序错误,例如无法连接到数据库 -> 引发 500 异常
在控制器函数中以返回正确 HTTP 错误的方式处理这些情况的标准/规范/正确方法是什么?这是一个很常见的场景,我想每次都以正确和简洁的方式来做。
这几乎可以工作,只是它不区分 id not valid/existing 错误和任何其他错误:
def view():
try:
customer = db(db.customer.id==request.args(0, cast=int)).select()[0]
except:
raise HTTP(404, 'Cannot find that customer')
return dict(customer=customer)