新聞中心
1、 使用@ControllerAdvice注解2、 使用@ExceptionHandler注解3、 使用自定義錯(cuò)誤頁(yè)面異常是程序中不可避免的一部分。
- 本文目錄導(dǎo)讀:
- 1、 使用@ControllerAdvice注解
- 2、 使用@ExceptionHandler注解
- 3、 使用自定義錯(cuò)誤頁(yè)面

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序設(shè)計(jì)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了定陶免費(fèi)建站歡迎大家使用!
異常是程序中不可避免的一部分,它們可能會(huì)在代碼執(zhí)行過(guò)程中發(fā)生。如果不加以處理,異??赡軙?huì)導(dǎo)致應(yīng)用崩潰或出現(xiàn)其他問(wèn)題。因此,在開(kāi)發(fā)應(yīng)用程序時(shí),我們需要考慮如何優(yōu)雅地處理異常。
Spring Boot 提供了各種機(jī)制來(lái)處理和管理異常,包括使用注解、自定義錯(cuò)誤頁(yè)面等方式。下面將詳細(xì)介紹 Spring Boot 中的幾種常見(jiàn)的異常處理方法。
1. 使用@ControllerAdvice注解
@ControllerAdvice 是一個(gè)基于 AOP 的全局異常處理器,在 Spring MVC 應(yīng)用程序中非常實(shí)用。通過(guò) @ControllerAdvice 注解可以捕獲到所有 Controller 層拋出的 Exception 異常,并進(jìn)行統(tǒng)一的封裝和返回給前端。
首先創(chuàng)建一個(gè)類(lèi)并添加 @ControllerAdvice 注解:
```
@ControllerAdvice
public class GlobalExceptionHandler {
// 處理 RuntimeException 異常
@ExceptionHandler(RuntimeException.class)
public ResponseEntity
return new ResponseEntity<>("運(yùn)行時(shí)錯(cuò)誤:" + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
}
}
在上述示例代碼中,handleRuntimeException 方法接收一個(gè) RuntimeException 參數(shù),并將其信息封裝成 ResponseEntity 對(duì)象并返回給前端。
2. 使用@ExceptionHandler注解
除了使用 @ControllerAdvice 注解外,還可以在 Controller 層添加 @ExceptionHandler 注解來(lái)對(duì)特定類(lèi)型的 Exception 進(jìn)行處理。這種方式對(duì)于單個(gè) Controller 的異常處理非常方便。
例如:
@RestController
public class UserController {
在上述示例代碼中,handleRuntimeException 方法與之前的一樣,但是它只會(huì)捕獲當(dāng)前 Controller 中拋出的 RuntimeException 異常。
3. 使用自定義錯(cuò)誤頁(yè)面
Spring Boot 還支持自定義錯(cuò)誤頁(yè)面來(lái)顯示應(yīng)用程序發(fā)生的異常信息。當(dāng)應(yīng)用程序拋出異常時(shí),可以將用戶(hù)重定向到一個(gè)特定的錯(cuò)誤頁(yè)面,并顯示相應(yīng)信息。
首先創(chuàng)建一個(gè) error.html 頁(yè)面并添加以下內(nèi)容:
在上述示例代碼中,我們使用了 Thymeleaf 模板引擎來(lái)渲染 HTML 頁(yè)面,并通過(guò) ${errorMessage} 來(lái)動(dòng)態(tài)地展示具體的異常信息。
然后,在 Spring Boot 應(yīng)用程序配置文件(application.yml 或 application.properties)中添加以下屬性:
server.error.path=/error
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
# 配置 Whitelabel Error Page 關(guān)閉
server.error.whitelabel.enabled=false
最后,在 Controller 層中拋出異常并測(cè)試:
@GetMapping("/user")
public String getUser() {
throw new RuntimeException("獲取用戶(hù)信息失敗");
當(dāng)訪(fǎng)問(wèn) /user 接口時(shí),應(yīng)用程序?qū)?huì)拋出一個(gè) RuntimeException 異常,并重定向到我們之前定義的 error.html 頁(yè)面。
在本文中,我們介紹了 Spring Boot 中三種不同的異常處理方式:使用@ControllerAdvice 注解、使用@ExceptionHandler注解和自定義錯(cuò)誤頁(yè)面。每種方式都有其優(yōu)點(diǎn)和缺點(diǎn),具體選擇哪種方法取決于你的需求以及應(yīng)用程序的復(fù)雜度。
無(wú)論使用何種方式來(lái)處理異常,在開(kāi)發(fā)過(guò)程中一定要注意對(duì)異常進(jìn)行充分測(cè)試,并確保應(yīng)用程序能夠正確地捕獲和處理所有可能發(fā)生的異常。只有這樣才能保證應(yīng)用程序運(yùn)行穩(wěn)定且可靠。
網(wǎng)站欄目:探尋SpringBoot07:如何優(yōu)雅地處理異常
分享URL:http://www.dlmjj.cn/article/dhhdocp.html


咨詢(xún)
建站咨詢(xún)
