springboot使用@ControllerAdvice 捕抓全局异常-自定义异常
【摘要】
使用方法很简单
package com.icode.common.web.handler; import com.icode.common.constant.exception.LoginException;import com.xd.core.common.command.ResponseCommand;import com.xd....
使用方法很简单
-
package com.icode.common.web.handler;
-
-
import com.icode.common.constant.exception.LoginException;
-
import com.xd.core.common.command.ResponseCommand;
-
import com.xd.core.common.error.ErrorMsg;
-
import com.xd.core.common.utils.WebUtils;
-
import org.springframework.web.bind.annotation.ControllerAdvice;
-
import org.springframework.web.bind.annotation.ExceptionHandler;
-
import org.springframework.web.bind.annotation.ResponseBody;
-
-
/**
-
* <全局异常捕捉,,注意:作为一个@ControllerAdvice, GlobalExceptionHandler.java要单独存放文件夹
-
* 或者已有bean的文件夹,否则和其他非bean文件放在一起就识别不出来>
-
**/
-
@ControllerAdvice
-
public class GlobalExceptionHandler {
-
-
/**
-
* <当springboot项目出现运行时异常都会进入此方法>
-
*/
-
@ExceptionHandler(value=Exception.class)
-
@ResponseBody
-
public ResponseCommand exceptionHandle(RuntimeException runtimeException){
-
//打印异常信息
-
runtimeException.printStackTrace();
-
//返回错误信息给接口调用者
-
return "{"errcode":"100","errMsg":"请求异常"}";
-
}
-
-
/**
-
* <自定义异常捕捉>
-
*
-
*/
-
@ExceptionHandler(LoginException.class)
-
@ResponseBody
-
public ResponseCommand exceptionLogin(RuntimeException loginException){
-
//打印异常信息
-
loginException.printStackTrace();
-
//返回错误信息给接口调用者
-
return "{"errcode":"100","errMsg":"请求异常"}";
-
}
-
}
注意: 抛出异常时必须抛出 RuntimeException 才能捕捉到,
-
@PostMapping(value = "article/validate/postArticle")
-
public String saveArticle1(String token ,ArticleRequestCommand command) throws Exception{
-
-
//RuntimeException 异常可正常捕捉
-
throw new RuntimeException("可以捕捉的异常");
-
-
-
//ControllerAdvice 无法捕捉Exception异常
-
throw new Exception("无法捕捉的异常");
-
-
-
return "succ";
-
-
-
}
另外,自定义异常也必须继承 RuntimeException 异常,否则也是无法捕捉的
-
package com.icode.common.constant.exception;
-
-
import lombok.Data;
-
-
/**
-
* <自定义异常,必须继承 RuntimeException ,@ControllerAdvice才能捕捉到>
-
*
-
**/
-
@Data
-
public class LoginException extends RuntimeException {
-
-
-
public LoginException() {
-
}
-
-
private Integer status;
-
-
public LoginException(String message) {
-
super(message);
-
}
-
-
public LoginException(Integer status,String message) {
-
super(message);
-
this.status = status;
-
}
-
}
文章来源: yexindong.blog.csdn.net,作者:java叶新东老师,版权归原作者所有,如需转载,请联系作者。
原文链接:yexindong.blog.csdn.net/article/details/85061939
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)