SpringBoot捕獲feign拋出異常的方法
前言
使用Springboot時,使用feign客戶端作為http請求工具時,當接口拋出異常信息時,使用全局異常是捕獲不了異常的
feign異常全局捕獲
定義一個異常類
@Getter
public class BusinessException extends RuntimeException {
private String message;
private int code;
public BusinessException(String message, int code) {
this.message = message;
this.code = code;
}
public BusinessException(String message) {
super(message);
this.message = message;
}
}
捕獲feign請求異常
@Slf4j
@Configuration
public class FeignExceptionConfig {
@Bean
public ErrorDecoder feignError() {
return (key, response) -> {
if (response.status() != HttpStatus.OK.value()) {
try {
String data = IOUtils.toString(response.body().asInputStream());
log.error("feign請求錯誤,返回值為:{{}}", data);
throw new BusinessException(data);
} catch (BusinessException e) {
throw e;
} catch (Exception e) {
log.error("異常信息為:", e);
throw new RuntimeException(e);
}
}
// 其他異常交給Default去解碼處理
// 這里使用單例即可,Default不用每次都去new
return new ErrorDecoder.Default().decode(key, response);
};
}
}
或者在全局異常捕獲加上這個
@ExceptionHandler(FeignException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public String handleFeignException(FeignException ex) {
log.error("feign異常處理信息", ex);
return ex.contentUTF8();
}
總結(jié)
feign客戶端是一個強大的請求工具,但是異常處理有時候得額外處理
到此這篇關(guān)于SpringBoot捕獲feign拋出異常的方法的文章就介紹到這了,更多相關(guān)SpringBoot捕獲feign異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java同步器AQS架構(gòu)AbstractQueuedSynchronizer原理解析
這篇文章主要為大家介紹了java同步器AQS架構(gòu)AbstractQueuedSynchronizer的底層原理及源碼解析,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進步早日升職加薪2022-03-03
Java報錯Java.text.ParseException的解決方法匯總
在Java開發(fā)的復雜世界中,錯誤處理是開發(fā)者必須面對的關(guān)鍵挑戰(zhàn)之一,其中,Java.text.ParseException就像一個隱藏在代碼叢林中的陷阱,常常讓開發(fā)者們陷入困惑,本文給大家介紹了Java報錯Java.text.ParseException的解決方法,需要的朋友可以參考下2024-10-10
java根據(jù)當前時間獲取yyyy-MM-dd?HH:mm:ss標準格式的時間代碼示例
在Java中可以使用java.time包中的LocalDateTime類和DateTimeFormatter類來獲取并格式化當前時間為yyyy-MM-dd?HH:mm:ss的格式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-10-10
SpringBoot使用Sa-Token實現(xiàn)權(quán)限認證
本文主要介紹了SpringBoot使用Sa-Token實現(xiàn)權(quán)限認證,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-04-04
解決maven打包排除類不生效maven-compiler-plugin問題
總結(jié):在Spring Boot項目B中作為項目A的依賴時,排除啟動類不生效的原因是被其他類引用或父POM引入,解決方法是跳過test編譯或注釋掉@SpringBootTest(classes={BApplication.class})2024-11-11

