开发异常处理
程序员文章站
2022-07-05 18:15:09
...
提供一个自定义异常对象
/**
* 自定义异常对象,定义异常状态码
*/
@Getter // get方法
public class LyException extends RuntimeException{
private Integer status;
/**
* 自己定义的异常信息状态
* @param status
* @param message
*/
public LyException(Integer status,String message) {
super(message);
this.status = status;
}
/**
* 通用异常信息显示
* @param exceptionEnum
*/
public LyException(ExceptionEnum exceptionEnum) {
super(exceptionEnum.getMessage());
this.status = exceptionEnum.getStatus();
}
}
提供一个自定义异常返回结果对象
import lombok.Getter;
import org.joda.time.DateTime;
/**
* 发生异常时,返回一个异常信息对象
*/
@Getter
public class ExceptionResult {
private Integer status;
private String message;
private String timestamp;
public ExceptionResult(LyException e) {
this.status = e.getStatus();
this.message = e.getMessage();
this.timestamp = DateTime.now().toString("yyyy-MM-dd HH:mm:ss");
}
}
提供一个自己处理异常的处理器对象
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
/**
* 异常信息处理类
*/
@ControllerAdvice
@Slf4j
public class BasicExceptionAdvice {
/**
* 处理LyException的异常的信息
* @param e
* @return
*/
@ExceptionHandler(LyException.class)
public ResponseEntity<ExceptionResult> handleExecption(LyException e){
return ResponseEntity.status(e.getStatus()).body(new ExceptionResult(e));
}
}
提供一个枚举对象来规范异常提示信息状态码
import lombok.Getter;
/**
* 异常信息枚举类
*/
@Getter
public enum ExceptionEnum {
INVALID_FILE_TYPE(400, "无效的文件类型!"),
INVALID_PARAM_ERROR(400, "无效的请求参数!"),
INVALID_PHONE_NUMBER(400, "无效的手机号码"),
INVALID_VERIFY_CODE(400, "验证码错误!"),
INVALID_USERNAME_PASSWORD(400, "无效的用户名和密码!"),
INVALID_SERVER_ID_SECRET(400, "无效的服务id和**!"),
INVALID_NOTIFY_PARAM(400, "回调参数有误!"),
INVALID_NOTIFY_SIGN(400, "回调签名有误!"),
CATEGORY_NOT_FOUND(404, "商品分类不存在!"),
BRAND_NOT_FOUND(404, "品牌不存在!"),
SPEC_NOT_FOUND(404, "规格不存在!"),
GOODS_NOT_FOUND(404, "商品不存在!"),
CARTS_NOT_FOUND(404, "购物车不存在!"),
APPLICATION_NOT_FOUND(404, "应用不存在!"),
ORDER_NOT_FOUND(404, "订单不存在!"),
ORDER_DETAIL_NOT_FOUND(404, "订单数据不存在!"),
DATA_TRANSFER_ERROR(500, "数据转换异常!"),
INSERT_OPERATION_FAIL(500, "新增操作失败!"),
UPDATE_OPERATION_FAIL(500, "更新操作失败!"),
DELETE_OPERATION_FAIL(500, "删除操作失败!"),
FILE_UPLOAD_ERROR(500, "文件上传失败!"),
DIRECTORY_WRITER_ERROR(500, "目录写入失败!"),
FILE_WRITER_ERROR(500, "文件写入失败!"),
SEND_MESSAGE_ERROR(500, "短信发送失败!"),
INVALID_ORDER_STATUS(500, "订单状态不正确!"),
STOCK_NOT_ENOUGH_ERROR(500, "库存不足!"),
UNAUTHORIZED(401, "登录失效或未登录!");
private int status;
private String message;
// 枚举类型不能为public,不能被外部调用
ExceptionEnum(int status, String message) {
this.status = status;
this.message = message;
}
}
上一篇: Leetcode_解码方法
下一篇: iOS 开发异常处理