KOCA版本 :4.0
KOCA模块 :GlobalExceptionHandler
模块版本 :4.0
场景 :异常处理
问题 :我需要自定义对IllegalArgumentException异常的处理,但是我发现我自己编写的拦截器无法拦截到异常,根据定位发现是框架的koca-web当中的GlobalExceptionHandler先拦截到并且抛出了,所以无法完成我本身的业务逻辑,如何在GlobalExceptionHandler中加入我本身的异常处理,需要改动源码?
报错细节 :
尝试解决方案:
1 个赞
目前有两种方式实现自定义异常处理。
方案一:
继承koca-web 中的 GlobalExceptionHandler 类,重写
ResultMessage getCustomExceptionMessage(Exception e)
例如:
@RestControllerAdvice
public class MyGlobalExceptionHandler extends GlobalExceptionHandler {
/**
* 根据异常类型,自定义返回异常信息,可以不实现。
* @param e
* @return ResultMessage
*/
@Override
protected ResultMessage getCustomExceptionMessage(Exception e) {
if (e instanceof AxxExcetion) {
return xxxResultMessage;
}
return super.getCustomExceptionMessage(e);
}
方案二:
按照spring webmvc 的方式自定义异常处理,并使用@Order定义其生效顺序
@Order(-1)
@ControllerAdvice
public class WorkflowExceptionHandler {
@ResponseBody
@ExceptionHandler(WorkflowException.class)
public Object handleWorkflowException(WorkflowException ex) {
logger.error(ex.getMessage(), ex);
//此次省略实现
}
}
如果是koca 4.0及之上的版本,建议使用方案一
2 个赞
学到了,感谢黄老师