ssm异常捕获和处理
package exception;import lombok.extern.slf4j.Slf4j;
import org.hibernate.HibernateException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;
import entity.vo.ResponseBodyResult;
import entity.vo.ResultVo;import java.io.IOException;
import java.sql.SQLException;
@ControllerAdvice
@Slf4j
public class ExceptionHandler {@org.springframework.web.bind.annotation.ExceptionHandler({NullPointerException.class})@ResponseBodypublic ResponseBodyResult myNullExceptionHandler(NullPointerException e){log.error(e.getMessage());log.error(String.valueOf(e.getCause()));return ResponseBodyResult.errorOf(ResultVo.NULL_EXCEPTION);}@org.springframework.web.bind.annotation.ExceptionHandler({ClassCastException.class})@ResponseBodypublic ResponseBodyResult myClassCastExceptionHandler(ClassCastException e){log.error(e.getMessage());log.error(String.valueOf(e.getCause()));return ResponseBodyResult.errorOf(ResultVo.CLASS_CAST_EXCEPTION);}@org.springframework.web.bind.annotation.ExceptionHandler({SQLException.class})@ResponseBodypublic ResponseBodyResult mySQLExceptionHandler(SQLException e){log.error(e.getMessage());log.error(String.valueOf(e.getCause()));return ResponseBodyResult.errorOf(ResultVo.SQL_EXCEPTION);}@org.springframework.web.bind.annotation.ExceptionHandler({IOException.class})@ResponseBodypublic ResponseBodyResult myIOExceptionHandler(IOException e){log.error(e.getMessage());log.error(String.valueOf(e.getCause()));return ResponseBodyResult.errorOf(ResultVo.IO_EXCEPTION);}@org.springframework.web.bind.annotation.ExceptionHandler({NoSuchMethodException.class})@ResponseBodypublic ResponseBodyResult myNoSuchMethodExceptionHandler(NoSuchMethodException e){log.error(e.getMessage());log.error(String.valueOf(e.getCause()));return ResponseBodyResult.errorOf(ResultVo.NO_SUCH_METHOD_EXCEPTION);}@org.springframework.web.bind.annotation.ExceptionHandler({Exception.class})@ResponseBodypublic ResponseBodyResult myExceptionHandler(Exception e){log.error(e.getMessage());log.error(String.valueOf(e.getCause()));return ResponseBodyResult.errorOf(ResultVo.EXCEPTION);}
}
package entity.vo;
public class ResponseBodyResult {private int code;private String message;private Object data;private ResponseBodyResult(int code, String message, Object data) {this.code = code;this.message = message;this.data = data;}private static ResponseBodyResult of(ResultVo resultVo, Object data) {return new ResponseBodyResult(resultVo.getCode(), resultVo.getMsg(), data);}public static ResponseBodyResult okOf(ResultVo resultVo) {return of(resultVo, null);}public static ResponseBodyResult okOf(ResultVo resultVo, Object data) {return of(resultVo, data);}public static ResponseBodyResult errorOf(ResultVo resultVo) {return of(resultVo, null);}public int getCode() {return code;}public void setCode(int code) {this.code = code;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}}
package entity.vo;
public enum ResultVo {FOUND_ALL_USER(1,"查询所有用户成功"),FOUND_ALL_DEPART(1,"查询所有部门成功"),NULL_EXCEPTION(999,"空指针异常"),NO_FOUND_USER(998, "该用户不存在"),DELETE_USER_SUCCESS(1,"删除成功"),DELETE_USER_FAIL(997,"删除失败"),FOUND_USER_BY_DEPART(1,"根据部门查数据成功"),FOUND_ONE_USER(1, "该用户已存在"),UPDATE_USER_SUCCESS(1, "更新成功"),UPDATE_USER_FAIL(996, "更新失败"),LOGIN_OUT_SUCCESS(1,"注销成功"),FOUND_GENDER_SUCCESS(1,"查询性别信息成功"),SAVE_USER_SUCCESS(1,"保存成功"),SAVE_USER_FAIL(996,"保存失败"),THE_USER_ALREADY_EXISTS(995,"该用户已存在"),CLASS_CAST_EXCEPTION(994,"强制类型转换异常"),SQL_EXCEPTION(993,"操作数据库异常"),IO_EXCEPTION(992,"输入输出异常"),NO_SUCH_METHOD_EXCEPTION(991,"方法未找到异常"),EXCEPTION(990,"出现异常");private Integer code;private String msg;ResultVo(Integer code, String msg) {this.code = code;this.msg = msg;}public Integer getCode() {return code;}public String getMsg() {return msg;}}