我是在同一條船上,你,我不喜歡默認的機制。幸運的是,使用web2py定製異常處理非常簡單。查看web2py目錄根目錄下的routes.py。我已經添加了以下到礦井:
routes_onerror = [( 'APPLICATION_NAME/*', '/ APPLICATION_NAME /錯誤/索引')]
此路由任何例外我的錯誤處理程序控制器(APPLICATION_NAME /控制器/error.py)中,我定義爲我的畫質指數:
def index():
if request.vars.code == '400':
return(dict(app=request.application,
ticket=None,
traceback="A 400 error was raised, this is controller/method path not found",
code=None,
layer=None,
wasEmailed=False))
elif request.vars.code == '404':
return(dict(app=request.application,
ticket=None,
traceback="A 404 error was raised, this is bad.",
code=None,
layer=None,
wasEmailed=False))
else:
fH = file('applications/%s/errors/%s' % (request.application,request.vars.ticket.split("/")[1]))
e = cPickle.load(fH)
fH.close()
__sendEmail(request.application,e['layer'],e['traceback'],e['code'])
return(dict(app=request.application,
ticket=request.vars.ticket,
traceback=e['traceback'],
code=e['code'],
layer=e['layer'],
wasEmailed=True))
正如你所看到的非400和404錯誤,我通過電子郵件發送的回溯到自己,然後調用相應的視圖/錯誤/ index.html的。在製作過程中,這種觀點給出了一個通用的「我很抱歉發生了錯誤,開發人員已通過電子郵件發送」。在我的開發服務器上,它顯示格式化的回溯。
感謝您的快速回復馬克,這似乎是一個很好的解決方案! – Fredrik 2010-08-18 19:52:43