SpringBoot實現統一異常處理
分享知識 傳遞快樂
Spring Boot 實現統一異常處理的方法主要有以下兩種:
- 使用@ControllerAdvice和@ExceptionHandler註解
- 使用ErrorController類來實現
1、使用@ControllerAdvice和@ExceptionHandler註解
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MaxUploadSizeExceededException;
import org.springframework.web.servlet.ModelAndView;
import com.xh.common.util.map.PageData;
import com.xh.common.util.result.Result;
@ControllerAdvice
public class LocalExceptionHandler {
@ExceptionHandler(ResultException.class)
@ResponseBody
public Result handleResultException(ResultException e) {
return Result.exception("500", "操作異常", e.getMessage());
}
@ExceptionHandler(MaxUploadSizeExceededException.class)
public ModelAndView handleResultException(MaxUploadSizeExceededException e) {
PageData.entityToMap(Result.exception("403", "上傳檔案過大"));
return new ModelAndView("", PageData.getMap());
}
@ExceptionHandler(Exception.class)
@ResponseBody
public Result handleResultException(Exception e) {
return Result.exception("500", "操作異常", e.getMessage());
}
}
說明:
1、註解@ControllerAdvice表示這是一個控制器增強類,當控制器發生異常就會被此攔截器被攔截。
2、註解@ExceptionHandler 定義攔截的異常類,可以獲取丟擲的異常資訊。這裡可以定義多個攔截方法,攔截不同的異常類,並且可以獲取丟擲的異常資訊,自由度更大。
2、使用ErrorController類來實現
@Controller
public class UserErrorController implements ErrorController {
@Autowired
private ErrorAttributes errorAttributes;
@RequestMapping("/error")
public String handleError(HttpServletRequest request){
//錯誤詳情
ServletWebRequest servletWebRequest = new ServletWebRequest(request);
Map<String, Object> errorAttributes = this.errorAttributes.getErrorAttributes(servletWebRequest, true);
//根據狀態碼返回到對應頁面
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
if(statusCode == 400){
return "/400";
}else if(statusCode == 403){
return "/403";
}else if(statusCode == 404){
return "/404";
}else{
return "/500";
}
}
@Override
public String getErrorPath() {
return "/error";
}
}
—————————
如有不足請留言指正
相互學習,共同進步
相關文章
- SpringBoot統一異常處理Spring Boot
- SpringBoot 實戰 (十四) | 統一處理異常Spring Boot
- SpringBoot處理全域性統一異常Spring Boot
- SpringBoot系列——自定義統一異常處理Spring Boot
- springboot統一異常處理及返回資料的處理Spring Boot
- SpringBoot第十四篇:統一異常處理Spring Boot
- Retrofit統一異常處理
- springBoot資料校驗與統一異常處理Spring Boot
- C#自定義異常 統一異常處理C#
- SpringBoot中異常處理Spring Boot
- SpringMVC 統一異常處理SpringMVC
- springboot下新增全域性異常處理和自定義異常處理Spring Boot
- Spring Boot統一異常處理最佳實踐Spring Boot
- springboot全域性異常處理Spring Boot
- spring boot 統一異常處理Spring Boot
- Spring MVC統一異常處理SpringMVC
- 統一返回物件和異常處理(一)物件
- 異常中的異常——藉助系統異常處理特例實現匪夷所思的漏洞利用
- 基於Gin框架實現異常處理框架
- Spring Boot實戰系列(4)統一異常處理Spring Boot
- SpringBoot之全域性異常處理Spring Boot
- NetCore實現全域性模型繫結異常資訊統一處理NetCore模型
- 統一返回物件和異常處理(二)物件
- spring中的統一異常處理Spring
- 異常篇——異常處理
- 異常處理最佳實踐
- Egg優雅的實現異常處理
- C++ 異常處理機制的實現C++
- springboot專案中的異常處理Spring Boot
- SpringBoot中的全域性異常處理Spring Boot
- 介面異常狀態統一處理方案:優先業務端處理,再按需統一處理。
- 異常處理
- SpringCloud SpringBoot mybatis分散式Web應用的統一異常處理GCCloudSpring BootMyBatis分散式Web
- 前端錯誤收集以及統一異常處理前端
- 簡單的全域性異常統一處理
- Java 傳統異常處理(二)Java
- SpringBoot專案實戰(7):自定義異常處理介面Spring Boot
- Vue3 如何實現全域性異常處理?Vue