There are a variety of runtime exceptions during program development, sometimes unpredictable, sometimes special exceptions for business needs and sometimes special handling of different exceptions
@ExceptionHandler: handles ExceptionHandler for a certain type of exception. @ControllerAdvice: Handles ExceptionHandler centrally to better separate the service logic from exception handling. @responseStatus: Specifies the HTTP status code for exceptional responses
\
Define a global exception catching class
package com.pd.shop.exception;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
/** * Global exception catch processing **@author Administrator
*/
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@Slf4j
public class GlobalExceptionHandler {
/** * Exception catch, the catch type is :Exception, except for custom types should be caught **@param e
* @return* /
@ResponseBody
@ResponseStatus(HttpStatus.OK)
@ExceptionHandler(Exception.class)
public String handleException(Exception e) {
log.info("System exception :{}", e);
// Write the exception handling logic
/ / proposal format return data of unity, reference: https://preparedata.blog.csdn.net/article/details/114667202
//return new Result(ResultCodeEnum.NO);
return "{ \"code\" : 0, \"msg\" : \"" + e + "\"}";
}
/** * User-defined service exceptions. The catch type is BizException. Only BizException exceptions can be caught@param e
* @return* /
@ResponseBody
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(BizException.class)
public String handleBizException(BizException e) {
log.info("Service exception :{}", e);
// Write the exception handling logic
/ / proposal format return data of unity, reference: https://preparedata.blog.csdn.net/article/details/114667202
//return new Result(e.getCode(), e.getMsg());
return "{ \"code\" : " + e.code + ", \"msg\" : \"" + e.msg + "\"}";
}
// You can append other custom exceptions, like BizException
}
Copy the code
Suggested format return data of unity, reference: preparedata.blog.csdn.net/article/det…
\
2. Customize service exceptions
package com.pd.shop.exception;
import lombok.Data;
/** * User-defined service exception **@author Administrator
*/
@Data
public class BizException extends RuntimeException {
/** * error code */
protected Integer code;
/** * error message */
protected String msg;
public BizException(Integer code, String msg){
this.code = code;
this.msg = msg; }}Copy the code
\
Customize service exceptions
package com.pd.shop.controller;
import com.pd.shop.exception.BizException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/ * * *@author Administrator
*/
@api (value = "test class ", tags =" test class ")
@RestController
@RequestMapping("/v1/testApi")
public class TestApiController {
@GetMapping("/exception1")
@apiOperation (value = "test Exception1 ", httpMethod = "GET")
public String exception1(a){
if(true) {/ / advice can define a business exception enumeration: reference https://preparedata.blog.csdn.net/article/details/114670846
throw new BizException(3."Error 3");
}
return "OK";
}
@GetMapping("/exception2")
@apiOperation (value = "test Exception2 ", httpMethod = "GET")
public String exception2(a){
if(true){
Integer A = 1/0;
}
return "OK"; }}Copy the code
Advice can define a business exception enumeration: reference preparedata.blog.csdn.net/article/det…