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