类似SpringMVC项目的异常处理可以这样做:
整个项目创建全局的:
1、一个自定义异常如OneException和错误码,统一封装所有异常。
2、一个返回实体类ResponseEntity,包含返回码code和数据体data,作为所有Controller的返回实体。
3、一个ResponseUtil来统一处理请求的返回数据即ResponseEntity(包括成功、异常)。
4、定义一个切面(@ControllerAdvice)ExceptionHandler来调用ResponseUtil统一处理Controller对异常情况的返回。
然后底层捕获的异常在打印日志的同时,统一throw一个 new OneException,填上自定义错误信息,由DAO->Service->Controller逐层向上抛,最后从Controller的签名中抛出,传到前台。
异常处理的几种方式:https://www.cnblogs.com/junzi2099/p/7840294.html
另外,Exception分为checked和unchecked两类。checked就是我们经常遇到的I/O相关的,unchecked如由Runtime Exception的派生的。
前者,调用者必须捕获处理。后者则不需要。
Spring和Hibernate等框架喜欢使用后者。可以这么做
https://www.iteye.com/blog/412887952-qq-com-2291524
https://blog.csdn.net/guohao_1/article/details/89951143
https://explainjava.com/java-exceptions/
https://segmentfault.com/q/1010000006653269