# 异常捕获
全局异常捕获不需要显式开启,在项目中加入了易水风萧通用组件后会自动启动。
对于某些需要自定义提示信息的异常来说,可以根据下面的配置进行修改
yishuifengxiao.error.map.Exception的名字=提示信息
其中Exception
的名字就是项目中需要捕获的异常的名称,例如ConstraintViolationException
、DataIntegrityViolationException
和DuplicateKeyException
,对于多个需要提示的错误,配置成多行即可,例如
yishuifengxiao.error.map.ConstraintViolationException=全局异常捕获到异常信息了
yishuifengxiao.error.map.DataIntegrityViolationException=全局异常捕获到异常信息了
yishuifengxiao.error.map.DuplicateKeyException=全局异常捕获到异常信息了
在有些时候,仅仅使用类的简称不能分辨出具体的信息,此时可以配置全称提示,例如
yishuifengxiao.error.full.com.demo.DemoException=自定义异常提示信息
# 显示使用
如果需要在其他地方显示地提取异常中的信息,可以通过com.yishuifengxiao.common.support.ErrorUtil
这个工具进行提取,他的主要API如下:
/**
* <p>
* 根据异常从配置信息中获取异常信息
* </p>
*
* 提取过程如下
* <ul>
* <li>先根据异常类的完整名字获取异常提示信息</li>
* <li>如果第一步中没有获取异常信息,则根据异常类的名字(不区分大小)获取异常提示信息</li>
* <li>如果还是没有获取到异常提示信息,就是用原来的异常类里的信息</li>
* </ul>
*
* @param e 异常信息
* @return 异常提示信息
*/
public static String getErrorMsg(Throwable e);
/**
* <p>
* 根据异常从配置信息中获取异常信息
* </p>
*
* 提取过程如下
* <ul>
* <li>先根据异常类的完整名字获取异常提示信息</li>
* <li>如果第一步中没有获取异常信息,则根据异常类的名字(不区分大小)获取异常提示信息</li>
* <li>如果还是没有获取到异常提示信息,且用户配置的提示信息不为空,则使用用户配置的第一个提示信息作为异常提示信息</li>
* <li>如果还是没有获取到异常提示信息,就是用原来的异常类里的信息</li>
* </ul>
*
* @param e 异常信息
* @param defaultMsg 自定义提示信息
* @return 异常提示信息
*/
public static String getErrorMsg(Throwable e, String defaultMsg) ;