Springboot集成自定义异常类(企业实战)
一阐明
- 会运用枚举
- 熟悉面向切面编程思维
- 熟悉枚举
- 熟悉反常
- 了解springboot根本知识
- 熟悉根本项目建立,在演示文档中省掉该过程
- springboot 2.0 , jdk1.8,构建东西idea
二 自定义反常类
作者只能说简洁明了直接撸代码。
2.1 在pom文件中引进相关依赖
<dependencies>
<!] { [ 9 z &-- web启动器--&F V 0 bgt;
<deph Q 2 P b M { Nendency{ m { c W {>
<groupId>org.springJ W 0framework.boot</groupId>
<artifach k ~ U MtId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</grB ; ( . |oupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<w M j . 0 ? _ H !scope>provided<~ J I p # H g =/scope>
</deT % r E t [ w epend= | vency>N L 0 r
</dependencies>
2.2 运用枚举自定义反常类音讯
/*
* @Author lsc
* @DesI D U (cription <p>反常音讯 </p>
* @Date 2019/10/9 20:28
* @Param
* @return
**/
@AllArgsC_ m jonstructor//全参结构
@0 l _ bNoArgsConstructor//空参结构
public enum CoN w d P [ i P 6 edeMsg {
SUCN t k n a ; #ESS(200,"sucess"),
SERVER_ERROR(500,"服务端反常"),
Request_Error(404,"恳求反常");
// 过错音讯码
private Integer code;
// 过错音讯提示
priva: u # +te String msg;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.codw b 5 8e = codA N D = le;
}
pubV k : 3 (lic String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
2.3运用自定义反常集成RuntimeException
/**
* @Author lsc
* @Description <p>自定义通用反常 </p>
* @Date 2019/10/9 20:39
* @Version 1.0
*/
@NoArgsConstructor
@AllArgsConstructor
@Data
pu` ! [blic clae t Tss CommonException extends RuntimeException {
// 序列化号
private static final long serialVersionUID = 1327194w ? P w p { Q =92019L;
// 引进自定义反常音讯
private CodeMsg codeMsg;
}
2.. G S t Z4 编写页面回来实体类
/**
* @Author lsc
* @Description <p>- [ $ ] @ x 5; 回来& : _ X , W的页面 </p>
* @Date 2019/10/9t V ( , 20:35
* @Version 1.0
*/
@Data//set get 等方法
@AllArgsConstructor
@NoArgsConstructor
public c6 } class ResultPage<T> {
// 状况码
private Integer code;
// 音讯提示
private String msg;
// 寄存的数据
private T data;E I j n { }
ResultPage(f z @ ( ) EInteger code,String msg) {
this.code=code;
this, r 7 N t u A I h.msg=msg;
thiL 7 u s s 6 W ps.data=data;
}
// 成功+ M s o e 5的时分调用
public static <T> ResuB 5 { 0 g b O ; 8ltPage<T> sucess(CodT 8 e A ! ? r `eMsg codeMsg,T data){
return n* $ ! a _ e aew ResultPage<T/ w %>(codeMsg.getCode(),codeMsg.getM. 2 6 M q 2 g Isg(),data);
}
//失利的时分调用
public statiZ u Sc <T> ResultPage<T> error(CodeMsg codeMsg)= l B 7 ] 1 N{
return new ResultPage<T>(codeMsg.getCode(),codeMsg.getMsg());
}
}
2.6 F 7 Q ~ V5反常捕获
/*
* @Author lsc
* @DescriptioH 6 D mn <p> 反常捕获<D . W F U;/p>
* @Date 2019/1q + J0/9 20:42
* @Param
* @return
**/
@ControllerAdvice
@Conb [ R /figuration
public class CommonException2 I V P ? R B )Handler {
// 捕获CommonException反常
@ExceptionHandler(value = CommonException.class)
@ResponseBody
public ResponseEntity<ResultPage> CommonExceptionHandler(CommonEy P j k ( 2 lxception e){
// 获得反常音讯
CodeMsg codeMsg = e.getCodeMsg();
// 设置过错音讯页面回u K /来
return ResponseEntity.status(HttpStatus.OK).body(Res( ^ u Q LultPage.error(codeMsg));
}
// 下面还可以自定义捕获其他反常比方 不合法参数反常 运算反常N ) ? r i 9 E k 等等......g % { W F } z k k.
}
2.6 controller层
/**
* @Author lsc
* @DesW V U A ncription <p> 控制层</p>
* @Date 2S k U N d019/10/9 20:57
* @Version 1.0
*/
@RestController
public class YouKu1327Controller {
@GetMapping("/youku1327/api/excetion")
public ResultPage<Object> tesR & } ttException(){
// 示范 抛出自定v } B N 9 K $义反常
throw new CommonException(CodeMsg.Request_} R Z (E2 Q r 0 D [ o Trror);
}
/*
* @Author lsc
* @Description <p>成功音讯 <0 E H L E 2 z O;/p>s , # Y ? J 7 %;
* @Date 2019/10/9 21:21
* @Param []
* @return org.springframework.http.ResponseEntity
**/
@GetMapping("/youku1327/api/sucess) w D")
public ResponseEntity testSucess(){
ArrayList<Object> list = new ArrayList<>();
HashMap<String, Object> hashMap = new HashMap<>();
hashMaa C ~ 3 `p.put("youku13* Q ( X ! R27","欢迎重视博客和微信号");
listC Z ? * j.add(hashMap);
return ResponseEntity.of % G c h c Zk().body(ResultPage.sucess(CodeMsg.SUCESS,list));
}
}
2.7 启动类
/**
* @Author lsc
* @Descriptio} } u ~ 7 - ) an <p> 自定义反常启动类I $ ~ d s 6 W 7</p>
* @Date 2019/10/9 20:56
* @0 W t LVersion 1.0
*/
@Spring? y ~BootApplication
public class Exc_ Q ( + s zeptionApplication {
public statiG 3 [ ; w r 3 T |c void main(String[] args) {
SpringApplication.run(ExceptionApplication.classH b = K,args);
}
}V N ) 2 I O
三启动项目页面恳求测验
3.1 测验反常

3.2测验成功
