Java⾃定义异常类以及异常
⾃定义异常类不难,但下⾯这个⽅法,它的核⼼是异常类。
就算是在分布式系统间进⾏传递也可以,只要最顶层的服务有这个异常类(下例是在springboot 项⽬中)
1、⾃定义异常类,继承⾃ RuntimeException,参数只有⼀个异常错误码
public class BingException extends RuntimeException {
private final int code;
public BingException(int code) {
}
public int getCode() {
de;
}
public String getMessage() {
String();
}
public String toString() {
return "系统异常,异常编码:" + de;
}
}
2、异常类
package fig;
import cn.jiashubingmon.BingException;
springboot和过滤器
import sult.ResultModel;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author jiashubing
* @since 2019/6/17
*/
@ControllerAdvice
public class BingExceptionHandler {
//⾃定义异常返回对应编码
@ExceptionHandler(BingException.class)
@ResponseBody
public ResultModel handlerBingException(BingException e) {
return new ResultModel(false, "token_outtime");
}
//其他异常报对应的信息
@ExceptionHandler(Exception.class)
@ResponseBody
public ResultModel handlerSellException(Exception e) {
return new ResultModel(false, "系统出错,错误信息为:" + e.getMessage());
}
}
也可以⽤下⾯复杂⼀点的办法
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* @author jiashubing
* @since 2018/10/29
*/
@ControllerAdvice
public class ExceptionHandle {
private static final Logger logger = Logger(ExceptionHandle.class);
/**
* 异常处理
* @param e 异常信息
* @return返回类是我⾃定义的接⼝返回类,参数是返回码和返回结果,异常的返回结果为空字符串
*/
@ExceptionHandler(value = Exception.class)
@ResponseBody
public Result handle(Exception e) {
/
/⾃定义异常返回对应编码
if (e instanceof BingException) {
BingException ex = (BingException) e;
return new Result<>(ex.getCode(), "");
}
//其他异常报对应的信息
else {
logger.info("[系统异常]{}", e.getMessage(), e);
return new Result<>(-1, "");
}
}
}
PS:还可以返回不同的response 状态,默认是200,@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 这个是返回500状态
3、然后在代码⾥抛异常就可以直接抛出异常了
throw new BingException(5);
原创⽂章,欢迎转载,转载请注明出处!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论