自定义错误处理器

错误处理器需要实现ErrorHandler接口的processExcption(BeetlException beeExceptionos, Writer writer);

  • beeExceptionos,模板各种异常
  • writer 模板使用的输出流。系统自带的并未采用此Writer,而是直接输出到控制台

自定义错误处理可能是有多个原因,比如

  • 想将错误输出到页面而不是控制台

  • 错误输出美化一下,而不是自带的格式

  • 错误输出的内容做调整,如不输出错误行的模板内容,而仅仅是错误提示

  • 错误输出到日志系统里

  • 不仅仅输出日志,还抛出异常。默认自带的不会抛出异常,ReThrowConsoleErrorHandler 继承了ConsoleErrorHandler方法,打印异常后抛出

  1. public class ReThrowConsoleErrorHandler extends ConsoleErrorHandler{
  2. @Override
  3. public void processExcption(BeetlException ex, Writer writer){
  4. super.processExcption(ex, writer);
  5. throw ex;
  6. }
  7. }

beetl 提供 ErrorInfo类来wrap BeetlException,转化为较为详细的提示信息,他具有如下信息

  • type 一个简单的中文描述
  • errorCode 内部使用的错误类型标识
  • errorTokenText 错误发生的节点文本
  • errorTokenLine 错误行
  • msg 错误消息,有可能没有,因为有时候errorCode描述的已经很清楚了
  • cause 错误的root 异常,也可能没有。

BeetlException 也包含了一个关键信息就是 resourceId,即出错所在的模板文件