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-03Java報錯Java.text.ParseException的解決方法匯總
在Java開發(fā)的復(fù)雜世界中,錯誤處理是開發(fā)者必須面對的關(guān)鍵挑戰(zhàn)之一,其中,Java.text.ParseException就像一個隱藏在代碼叢林中的陷阱,常常讓開發(fā)者們陷入困惑,本文給大家介紹了Java報錯Java.text.ParseException的解決方法,需要的朋友可以參考下2024-10-10java根據(jù)當前時間獲取yyyy-MM-dd?HH:mm:ss標準格式的時間代碼示例
在Java中可以使用java.time包中的LocalDateTime類和DateTimeFormatter類來獲取并格式化當前時間為yyyy-MM-dd?HH:mm:ss的格式,文中通過代碼介紹的非常詳細,需要的朋友可以參考下2024-10-10SpringBoot使用Sa-Token實現(xiàn)權(quán)限認證
本文主要介紹了SpringBoot使用Sa-Token實現(xiàn)權(quán)限認證,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04解決maven打包排除類不生效maven-compiler-plugin問題
總結(jié):在Spring Boot項目B中作為項目A的依賴時,排除啟動類不生效的原因是被其他類引用或父POM引入,解決方法是跳過test編譯或注釋掉@SpringBootTest(classes={BApplication.class})2024-11-11