最近在项目上遇到一个有关dubbo的问题,项目分为两层:下层是一些基础服务,上层是业务服务调用下层的基础服务。上层服务的有一个全局的异常拦截器来拦截异常。
@ControllerAdvice
@Slf4j
public class ExceptionFilter {
@ExceptionHandler
public ResponseEntity defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
if(e instanceof MyException){
//自定义处理
}
log.error(e.getMessage(), e);
Result res = new Result(500, "SYSTEM_EXCEPTIONS", "系统异常");
return ResponseEntity.ok(res);
}
}
全局异常可以catch程序上层的异常,进行不同的处理,进行更加友好的提示。
下层抛出的异常:
public void text(){
throw new MyException("aaaa");
}
然后遇到了一个奇怪的问题,在下层中抛出了一个自定义的异常,但是在上层中捕获异常的时候,却是捕获到runtimeException异常,异常中的message存放了我们需要的对象异常。导致就无法对自定义的异常做特殊处理。
java.lan