合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
## 2.9 自定义错误处理器 错误处理器需要实现ErrorHandler接口的processExcption(BeetlException beeExceptionos, Writer writer); - beeExceptionos,模板各种异常 - writer 模板使用的输出流。系统自带的并未采用此Writer,而是直接输出到控制台 自定义错误处理可能是有多个原因,比如 1. 想将错误输出到页面而不是控制台 2. 错误输出美化一下,而不是自带的格式 3. 错误输出的内容做调整,如不输出错误行的模板内容,而仅仅是错误提示 4. 错误输出到日志系统里 5. 不仅仅输出日志,还抛出异常。默认自带的不会抛出异常,ReThrowConsoleErrorHandler 继承了ConsoleErrorHandler方法,打印异常后抛出 ```java 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,即出错所在的模板文件