@Slf4j<br>@RestControllerAdvice // @ResponseBody+@ControllerAdvice注解的结合体,@ControllerAdvice注解表示该类是全局异常处理类<br>public class ExceptionDeal {<br><br> // 根据括号内的异常种类,全局如有相应的异常,则会被此注解捕获,进行方法内的下一步操作<br> @ExceptionHandler(ArithmeticException.class)<br> public String exceptions(ArithmeticException e) {<br> log.info("全局异常:{}",e.getMessage());<br> return "算法异常";<br> }<br><br> // 任何空指针异常会被该方法捕获处理<br> @ExceptionHandler(NullPointerException.class)<br> public String exceptions1(NullPointerException e) {<br> log.info("全局异常:{}",e.getMessage());<br> return "空指针异常";<br> }<br>}
复制代码
<br>// 测试类
复制代码
@RestController<br>@RequestMapping("/demo")<br>public class TestDemo {<br> @RequestMapping("/test")<br> public String getInfo(){<br> int a = 1/0;<br> return a+"";<br> }<br><br> @RequestMapping("/test1")<br> public String getInfos(){<br> String s=null;<br> BigDecimal bigDecimal = new BigDecimal(s);<br> return bigDecimal.toString();<br> }<br>}<br><br>二、利用面向切面编程(AOP)可以更方便地实现Java后端的全局统一异常处理。我们可以通过AOP将异常处理代码从业务逻辑代码中分离出来,降低代码耦合度,提高代码的可维护性和可扩展性。
@RestController<br>@RequestMapping("/demo")<br>public class TestDemo {<br> @RequestMapping("/test")<br> public String getInfo(){<br> int a = 1/0;<br> return a+"";<br> }<br><br> @RequestMapping("/test1")<br> public String getInfos(){<br> String s=null;<br> BigDecimal bigDecimal = new BigDecimal(s);<br> return bigDecimal.toString();<br> }<br>}