新建異常資訊實體類
非必要的類,主要用於包裝異常資訊。
/**
*/public
class
errorresponse
public
errorresponse
(string errortypename, string message)..
....省略getter/setter方法
}
自定義異常型別
一般我們處理的都是 runtimeexception ,所以如果你需要自定義異常型別的話直接整合這個類就可以了。
/**
* 自定義異常型別
*/public
class
resourcenotfoundexception
extends
runtimeexception
public
resourcenotfoundexception
(string message)
@override
public string getmessage()
public
void
setmessage
(string message)
}
新建異常處理類
我們只需要在類上加上@controlleradvice註解這個類就成為了全域性異常處理類,當然你也可以通過 assignabletypes指定特定的 controller 類,讓異常處理類只處理特定類丟擲的異常。
/**
*/@controlleradvice
(assignabletypes =
)@responsebody
public
class
globalexceptionhandler
else
if(e instanceof
resourcenotfoundexception
)return null;
}}
controller模擬丟擲異常
/**
* @author shuang.kou
*/@restcontroller
("/api"
)public
class
exceptioncontroller
("/resourcenotfoundexception"
)public
void
throwexception2()
}
使用 get 請求 localhost:8080/api/resourcenotfoundexception[1] (curl -i -s -x get url),服務端返回的 json 資料如下:
編寫測試類
mockmvc 由org.springframework.boot.test包提供,實現了對http請求的模擬,一般用於我們測試 controller 層。
/**
*/@autoconfiguremockmvc
@springboottest
public
class
exceptiontest
@test
void
should_return_404_if_resourse_not_found()
throws exception
}
@exceptionhandler 處理 controller 級別的異常
我們剛剛也說了使用@controlleradvice註解 可以通過 assignabletypes指定特定的類,讓異常處理類只處理特定類丟擲的異常。所以這種處理異常的方式,實際上現在使用的比較少了。
@exceptionhandler
(value = exception.
class
)// 攔截所有異常
public responseentity
exceptionhandler
(exception e)
else
if(e instanceof
resourcenotfoundexception
)return null;
}
responsestatu***ception
研究 responsestatu***ception 我們先來看看,通過 responsestatus註解簡單處理異常的方法(將異常對映為狀態碼)。
}使用 get 請求 localhost:8080/api/resourcenotfoundexception2[2] ,服務端返回的 json 資料如下:
這種通過 responsestatus註解簡單處理異常的方法是的好處是比較簡單,但是一般我們不會這樣做,通過responsestatu***ception會更加方便,可以避免我們額外的異常類。
("/resourcenotfoundexception2"
)public
void
throwexception3()
使用 get 請求 localhost:
8080
/api/resourcenotfoundexception2[
3] ,服務端返回的 json 資料如下,和使用 responsestatus 實現的效果一樣:
responsestatu***ception 提供了三個構造方法:
建構函式中的引數解釋如下:
springboot的異常處理
1 預設規則 預設情況下,spring boot提供 error處理所有錯誤的對映 對於機器客戶端,它將生成json響應,其中包含錯誤,http狀態和異常訊息的詳細資訊。對於瀏覽器客戶端,響應乙個 whitelabel 錯誤檢視,以html格式呈現相同的資料 瀏覽器預設錯誤頁面 非瀏覽器客戶端預設響...
springBoot異常處理
使得訪問 exception一定會產生異常 some exception controller public class exceptioncontroller return hello 再寫個全域性異常處理類 controlleradvice public class globalexceptio...
Spring Boot 處理異常
原理 略 1 在template下建立error目錄,在error目錄中,建立404.html頁面,如果發生錯誤 為404,就會去找這個頁面 可以建立所有的狀態碼頁面 2 在error目錄中,建立4xx.html頁,如果找不到對應的狀態碼頁面,就會去找4xx.html頁面 注意4xx.html就是4...