springboot全局异常处理代码实例
这篇文章主要介绍了springboot全局异常处理代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
前言:
开发中异常的处理必不可少,常用的就是throw和trycatch,这样一个项目到最后会出现很多冗余的代码,使用全局异常处理避免过多冗余代码。
全局异常处理:
1、pom依赖(延续上一章代码):
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 mysql mysql-connector-java runtime com.alibaba druid-spring-boot-starter 1.1.0 org.projectlombok lombok 1.16.18 com.alibaba fastjson 1.2.31
2、公共的结果类封装:
这里简单封装,实际根据自己业务需求去封装。
@Getter @Setter publicclassApiResult{ //响应业务状态 privateIntegerstatus; //响应消息 privateStringmsg; //响应中的数据 privateObjectdata; publicstaticApiResultbuild(Integerstatus,Stringmsg,Objectdata){ returnnewApiResult(status,msg,data); } publicstaticApiResultok(Objectdata){ returnnewApiResult(data); } publicstaticApiResultok(){ returnnewApiResult(null); } publicApiResult(){} publicstaticApiResultbuild(Integerstatus,Stringmsg){ returnnewApiResult(status,msg,null); } publicApiResult(Integerstatus,Stringmsg,Objectdata){ this.status=status; this.msg=msg; this.data=data; } publicApiResult(Objectdata){ this.status=200; this.msg="OK"; this.data=data; } }
3、添加全局异常处理类(在入口函数下的包中新建):
/** *全局异常处理Handler *@ControllerAdvice配置控制器通知 *annotations属性:指定我们需要拦截的注解,一个或多个(多个加到大括号中,逗号分隔) */ //@RestControllerAdvice=@ResponseBody+@ControllerAdvice @RestControllerAdvice(annotations={RestController.class}) @Slf4j publicclassGlobalExceptionHandler{ /** *默认统一异常处理方法 *@ExceptionHandler注解用来配置需要拦截的异常类型,也可以是自定义异常 */ @ExceptionHandler(Exception.class) //此处可以指定返回的状态码和返回结果说明 //@ResponseStatus(reason="exception",value=HttpStatus.BAD_REQUEST) publicObjectruntimeExceptionHandler(Exceptione){ //打印异常信息到控制台 e.printStackTrace(); log.error("请求出现异常,异常信息为:{}",e.getMessage()); //使用公共的结果类封装返回结果,这里我指定状态码为400 returnApiResult.build(400,e.getMessage()); } }
4、异常测试类:
/** *异常处理测试controller */ @RestController @Slf4j publicclassExceptionController{ @RequestMapping(value="/exception/{number}") publicApiResultexception(@PathVariableintnumber){ intres=10/number; log.info(">>>>>结果number为:{}",res); returnApiResult.ok(); } }
5、测试:
5.1、请求接口:http://localhost:8080/exception/1结果正常
5.2、请求接口:http://localhost:8080/exception/0出现除以0错误,全局异常处理起作用,返回指定结果集。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。