使用Bottle捕获mako运行时错误
作者:互联网
我正在寻找一种方法来使用Bottle捕获mako运行时错误.
使用以下代码捕获python中的运行时错误:
# main.py
from lib import errors
import bottle
app = bottle.app()
app.error_handler = errors.handler
...
# lib/errors.py
from bottle import mako_template as template
def custom500(error):
return template('error/500')
handler = {
500: custom500
}
这样可以完美地工作,因为异常会变成500内部服务器错误.
我想以类似的方式捕获mako运行时错误,有没有人知道如何实现这一点?
解决方法:
您想要捕获mako.exceptions.SyntaxException.
这段代码适合我:
@bottle.route('/hello')
def hello():
try:
return bottle.mako_template('hello')
except mako.exceptions.SyntaxException as exx:
return 'mako exception: {}\n'.format(exx)
编辑:根据您的评论,这里有一些关于如何全局安装它的指针.在mako.exceptions.SyntaxException尝试块中安装包装函数的bottle plugin.
这些方面的东西:
@bottle.route('/hello')
def hello():
return bottle.mako_template('hello')
def catch_mako_errors(callback):
def wrapper(*args, **kwargs):
try:
return callback(*args, **kwargs)
except mako.exceptions.SyntaxException as exx:
return 'mako exception: {}\n'.format(exx)
return wrapper
bottle.install(catch_mako_errors)
标签:python,bottle,mako 来源: https://codeday.me/bug/20190629/1325640.html