Spring 處理異常

2021-09-14 03:26:56 字數 2362 閱讀 8368

目錄

1. 簡介

2. spring自身異常自動對映為指定http狀態碼

3. 使用@responsestatus將自定義異常對映為指定http狀態碼

4. 基於控制器處理異常:@exceptionhandler

5. 全域性異常處理:@controlleradvice———推薦

參考:spring mvc異常統一處理的三種方式

在具體的ssm專案開發中,由於controller層為處於請求處理的最頂層,再往上就是框架**的。因此,肯定需要在controller捕獲所有異常,並且做適當處理,返回給前端乙個友好的錯誤碼。

spring提供了多種方式將異常轉換為響應:

在預設情況下,spring會將自身的一些異常自動轉換為合適的狀態碼,從而反饋給客戶端。實際上,如果沒有出現任何對映的異常,響應都會帶有500狀態碼。對映表如下:

通過使用@responsestatus註解將自定義的異常對映為指定的http狀態碼

/**

* value 要匹配的異常狀態碼

* reson 提示的異常原因

方法上新增@exceptionhander(***x異常.class),該方法會處理指定的異常。

該註解有乙個不好的地方就是:進行異常處理的方法必須與出錯的方法在同乙個controller裡面。不能全域性控制異常。每個類都要寫一遍。

@controller      

public class globalcontroller )

public string exception(myexception e)

public void test()

}

控制器通知:是任意使用@controlleradvice註解修飾的類。這個類中包含了乙個或多個如下型別的方法:

。達到全域性異常的處理。

logger.error("服務執行異常", e);

e.printstacktrace();

return serviceresponsehandle.failed("server_error");}}

如果 @exceptionhandler 註解中未宣告要處理的異常型別,則預設為引數列表中的異常型別。所以還可以寫成這樣:

@controlleradvice

public class globalexceptionhandler

}

Spring 異常處理

今天在做專案的時候突然發現異常處理還有所欠缺,所有打算好好的加強一下異常的處理,順便好好鞏固以前學習的知識和增加新的知識。實現spring介面 handlerexceptionresolver public class exceptionresolver implements handlerexce...

spring異常處理

spring提供了多種方式將異常轉化為響應 1.內建的將以異常轉換為http碼就不說了,由spring自身丟擲,然後產生對應的http狀態碼響應。2.下例子用 responsestatus註解將myexception異常對映為http狀態碼404。沒有找到 public class myexcept...

Spring 全域性異常處理

1 描述 在j2ee專案的開發中,不管是對底層的資料庫操作過程,還是業務層的處理過程,還是控制層的處理過程,都不可避免會遇到各種可預知的 不可預知的異常需要處理。每個過程都單獨處理異常,系統的 耦合度高,工作量大且不好統一,維護的工作量也很大。那麼,能不能將所有型別的異常處理從各處理過程解耦出來,這...