SpringBoot学习——全局异常处理设置(返回JSON)
需求
如今,我们习惯于使用ajax来发起请求,所以我们经常需要服务器返回一个json或字符串。控制全局异常处理。如果在单个方法中使用try,catch将包装该方法,该方法将被异常抛出,并且由@Transactional注释的方法事务将不会回滚。解释
使用@ControllerAdvice注释用@ExceptionHandler注释来注释@ControllerAdvice
这个注解是spring2.3之后的新注解,主要用来辅助Controller一些常见需求的低入侵增强,作用于@RequestMapping注解的方法。
@ExceptionHandler
该注释与@ExceptionHandler一起使用,后者可以自定义错误处理程序,自行组装json字符串并将其返回到页面。
密码
按如下方式创建全局异常处理类:
如果不同的异常有不同的操作要实现,只需要使@ExceptionHandler的值不同,就可以同时实现多个不同的异常处理,但是没有包含状态。
导入javax . servlet . http . HttpServletrequest;import org . spring framework . web . bind . annotation . controller advice;import org . spring framework . web . bind . annotation . exception handler;import org . spring framework . web . bind . annotation . response body;@控制器建议@响应正文公共类globalexceptionhandler {/* * *所有异常都报告错误* @ param request * @ param exception * @ return * @ throwsexception */@ Exception handler(值=Exception.class)公共字符串allExceptionHandler(httperservlerequest请求,Exception)引发Exception { Exception . printstacktrace();System.out.println('我报告了一个错误:' exception . getlocalized message());System.out.println('我报告了一个错误:' exception . getcause());System.out.println('我报告了一个错误:' exception . getsuppressed());System.out.println('我报告了一个错误:' exception . getmessage());System.out.println('我报告了一个错误:' exception . getstackrace());返回“服务器异常,请联系管理员!”;}}模拟引发异常的类。以下示例引发空指针异常,分母不是异常
import org . spring framework . stereotype . controller;import org . spring framework . web . bind . annotation . request mapping;import org . spring framework . web . bind . annotation . response body;@ Controller @ request mapping(“/exception test”)@ ResponseBodypublic类exception test { @ request mapping(“/test”)public String test(){ Message msg=null;msg . ToString();createException();回报‘我很正常’;} private void createException(){ int I=5/0;}}启动回弹并执行结果
因为它返回一个字符串,所以它也可以被json工具类封装以返回一个json字符串
以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。