SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼
什么是 @ResponseStatus 注解?
@ResponseStatus 注解用于指定控制器方法拋出異常時(shí)的 HTTP 狀態(tài)碼和對(duì)應(yīng)的錯(cuò)誤信息。
當(dāng)控制器方法拋出指定類型的異常時(shí),SpringBoot 會(huì)自動(dòng)將 @ResponseStatus 注解中定義的狀態(tài)碼和錯(cuò)誤信息返回給客戶端。
該注解的語(yǔ)法如下:
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Bad request")
public class BadRequestException extends RuntimeException {
}在上面的代碼中, @ResponseStatus 注解定義了一個(gè) BadRequestException 異常類,并指定了 HTTP 狀態(tài)碼為 400(Bad Request),錯(cuò)誤信息為 “Bad request”。
當(dāng)控制器方法拋出 BadRequestException 異常時(shí),SpringBoot 會(huì)自動(dòng)將 HTTP 狀態(tài)碼和錯(cuò)誤信息返回給客戶端。
如何使用 @ResponseStatus 注解處理異常狀態(tài)碼
下面我們通過一個(gè)示例來(lái)演示如何使用 @ResponseStatus 注解處理異常狀態(tài)碼。
步驟 1:創(chuàng)建 SpringBoot 項(xiàng)目
首先,我們需要?jiǎng)?chuàng)建一個(gè) SpringBoot 項(xiàng)目??梢允褂?Spring Initializr 快速創(chuàng)建一個(gè)空的 SpringBoot 項(xiàng)目。在項(xiàng)目中添加以下依賴:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>其中, spring-boot-starter-web 依賴用于創(chuàng)建 Web 項(xiàng)目。
步驟 2:定義異常類
接下來(lái),我們需要定義一個(gè)異常類,用于拋出異常。在異常類中,我們使用 @ResponseStatus 注解來(lái)定義 HTTP 狀態(tài)碼和錯(cuò)誤信息。具體代碼如下:
@ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "Bad request")
public class BadRequestException extends RuntimeException {
}在上面的代碼中, @ResponseStatus 注解定義了一個(gè) BadRequestException 異常類,并指定了 HTTP 狀態(tài)碼為 400(Bad Request),錯(cuò)誤信息為 “Bad request”。
步驟 3:創(chuàng)建控制器
接下來(lái),我們需要?jiǎng)?chuàng)建一個(gè)控制器,用于處理請(qǐng)求。在控制器中,我們拋出 BadRequestException 異常。具體代碼如下:
@RestController
@RequestMapping("/users")
public class UserController {
@GetMapping("/{id}")
public ResponseEntity<User> getUserById(@PathVariable Long id) {
if (id <= 0) {
throw new BadRequestException();
}
User user = userRepository.findById(id).orElseThrow(() -> new ResourceNotFoundException("User", "id", id));
return ResponseEntity.ok().body(user);
}
}在上面的代碼中,當(dāng) URL 中的 id 參數(shù)小于等于 0 時(shí),我們拋出 BadRequestException 異常。
步驟 4:測(cè)試
最后,我們可以使用 Postman 或類似的工具來(lái)測(cè)試我們的控制器。例如,我們可以發(fā)送一個(gè) GET 請(qǐng)求到 /users/0 ,這會(huì)導(dǎo)致控制器拋出 BadRequestException 異常,并返回 HTTP 狀態(tài)碼為 400 和錯(cuò)誤信息為 “Bad request” 的響應(yīng)。
總結(jié)
本文介紹了如何使用 @ResponseStatus 注解處理異常狀態(tài)碼。
通過 @ResponseStatus 注解,我們可以方便地指定控制器方法拋出異常時(shí)的 HTTP 狀態(tài)碼和對(duì)應(yīng)的錯(cuò)誤信息,以保證應(yīng)用程序的穩(wěn)定性和可靠性。
在實(shí)際開發(fā)中,我們可以根據(jù)具體的業(yè)務(wù)需求來(lái)選擇合適的異常處理方式,并編寫相應(yīng)的異常處理邏輯,以保證應(yīng)用程序的正常運(yùn)行。
到此這篇關(guān)于SpringBoot中的@ResponseStatus注解處理異常狀態(tài)碼的文章就介紹到這了,更多相關(guān)@ResponseStatus注解處理異常狀態(tài)碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java計(jì)時(shí)器工具StopWatch的具體使用
計(jì)時(shí)器在很多地方都可以用到,本文主要介紹了Java計(jì)時(shí)器工具StopWatch的具體使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
淺析非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn)
接口層做數(shù)據(jù)加密應(yīng)該算是老生常談的一件事了,業(yè)界用的比較多的,不外乎是對(duì)稱加密,非對(duì)稱加密以及兩者的結(jié)合。本文就來(lái)聊聊非對(duì)稱加密在接口參數(shù)中的實(shí)現(xiàn),希望對(duì)大家有所幫助2023-02-02
MyBatis-plus更新對(duì)象時(shí)將字段值更新為null的實(shí)現(xiàn)方式
mybatis-plus在執(zhí)行更新操作,當(dāng)更新字段為 空字符串 或者 null 的則不會(huì)執(zhí)行更新,如果要將指定字段更新null,可以通過以下三種方式實(shí)現(xiàn),感興趣的小伙伴跟著小編一起來(lái)看看吧2023-10-10
Java設(shè)計(jì)模式之代理模式原理及實(shí)現(xiàn)代碼分享
這篇文章主要介紹了Java設(shè)計(jì)模式之代理模式原理及實(shí)現(xiàn)代碼分享,設(shè)計(jì)代理模式的定義,靜態(tài)代理,動(dòng)態(tài)代理,jdk動(dòng)態(tài)代理實(shí)現(xiàn)步驟,原理及源碼等相關(guān)內(nèi)容,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Java動(dòng)態(tài)添加Scheduled的實(shí)現(xiàn)方式
在Java中,動(dòng)態(tài)添加??Scheduled???定時(shí)任務(wù)可以通過多種方式實(shí)現(xiàn),其中最常見的是使用Spring框架提供的??@Scheduled???注解結(jié)合??SchedulingConfigurer???接口,下面將詳細(xì)介紹如何在Spring環(huán)境中動(dòng)態(tài)地添加、修改和取消定時(shí)任務(wù),需要的朋友可以參考下2025-10-10
Spring?MVC請(qǐng)求轉(zhuǎn)發(fā)與請(qǐng)求重定向的示例詳解
轉(zhuǎn)發(fā)指服務(wù)器接收請(qǐng)求后,從一個(gè)資源跳轉(zhuǎn)到另一個(gè)資源中,請(qǐng)求轉(zhuǎn)發(fā)是一次請(qǐng)求,不會(huì)改變?yōu)g覽器的請(qǐng)求地址,這篇文章主要介紹了Spring?MVC請(qǐng)求轉(zhuǎn)發(fā)與請(qǐng)求重定向的相關(guān)知識(shí),需要的朋友可以參考下2023-09-09

