自定义错误处理器
错误处理器需要实现ErrorHandler接口的processExcption(BeetlException beeExceptionos, Writer writer);
- beeExceptionos,模板各种异常
- writer 模板使用的输出流。系统自带的并未采用此Writer,而是直接输出到控制台
自定义错误处理可能是有多个原因,比如
想将错误输出到页面而不是控制台
错误输出美化一下,而不是自带的格式
错误输出的内容做调整,如不输出错误行的模板内容,而仅仅是错误提示
错误输出到日志系统里
不仅仅输出日志,还抛出异常。默认自带的不会抛出异常,ReThrowConsoleErrorHandler 继承了ConsoleErrorHandler方法,打印异常后抛出
public class ReThrowConsoleErrorHandler extends ConsoleErrorHandler{
@Override
public void processExcption(BeetlException ex, Writer writer){
super.processExcption(ex, writer);
throw ex;
}
}
beetl 提供 ErrorInfo类来wrap BeetlException,转化为较为详细的提示信息,他具有如下信息
- type 一个简单的中文描述
- errorCode 内部使用的错误类型标识
- errorTokenText 错误发生的节点文本
- errorTokenLine 错误行
- msg 错误消息,有可能没有,因为有时候errorCode描述的已经很清楚了
- cause 错误的root 异常,也可能没有。
BeetlException 也包含了一个关键信息就是 resourceId,即出错所在的模板文件