【已解决】如何自定义异常处理?GlobalExceptionHandler

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 个赞

学到了,感谢黄老师