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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。