SpringBoot捕獲feign拋出異常的方法
前言
使用Springboot時(shí),使用feign客戶端作為http請求工具時(shí),當(dāng)接口拋出異常信息時(shí),使用全局異常是捕獲不了異常的
feign異常全局捕獲
定義一個(gè)異常類
@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請求錯(cuò)誤,返回值為:{{}}", 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); }; } }
或者在全局異常捕獲加上這個(gè)
@ExceptionHandler(FeignException.class) @ResponseStatus(HttpStatus.BAD_REQUEST) public String handleFeignException(FeignException ex) { log.error("feign異常處理信息", ex); return ex.contentUTF8(); }
總結(jié)
feign客戶端是一個(gè)強(qiáng)大的請求工具,但是異常處理有時(shí)候得額外處理
到此這篇關(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的底層原理及源碼解析,有需要的朋友可以借鑒參考下,希望能有所幫助,祝大家多多進(jìn)步早日升職加薪2022-03-03Java報(bào)錯(cuò)Java.text.ParseException的解決方法匯總
在Java開發(fā)的復(fù)雜世界中,錯(cuò)誤處理是開發(fā)者必須面對的關(guān)鍵挑戰(zhàn)之一,其中,Java.text.ParseException就像一個(gè)隱藏在代碼叢林中的陷阱,常常讓開發(fā)者們陷入困惑,本文給大家介紹了Java報(bào)錯(cuò)Java.text.ParseException的解決方法,需要的朋友可以參考下2024-10-10java根據(jù)當(dāng)前時(shí)間獲取yyyy-MM-dd?HH:mm:ss標(biāo)準(zhǔn)格式的時(shí)間代碼示例
在Java中可以使用java.time包中的LocalDateTime類和DateTimeFormatter類來獲取并格式化當(dāng)前時(shí)間為yyyy-MM-dd?HH:mm:ss的格式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-10-10Java?精煉解讀時(shí)間復(fù)雜度與空間復(fù)雜度
對于一個(gè)算法,其時(shí)間復(fù)雜度和空間復(fù)雜度往往是相互影響的,當(dāng)追求一個(gè)較好的時(shí)間復(fù)雜度時(shí),可能會(huì)使空間復(fù)雜度的性能變差,即可能導(dǎo)致占用較多的存儲(chǔ)空間,這篇文章主要給大家介紹了關(guān)于Java時(shí)間復(fù)雜度、空間復(fù)雜度的相關(guān)資料,需要的朋友可以參考下2022-03-03SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證
本文主要介紹了SpringBoot使用Sa-Token實(shí)現(xiàn)權(quán)限認(rèn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04解決maven打包排除類不生效maven-compiler-plugin問題
總結(jié):在Spring Boot項(xiàng)目B中作為項(xiàng)目A的依賴時(shí),排除啟動(dòng)類不生效的原因是被其他類引用或父POM引入,解決方法是跳過test編譯或注釋掉@SpringBootTest(classes={BApplication.class})2024-11-11SpringMVC多個(gè)模塊404報(bào)錯(cuò)問題及解決
這篇文章主要介紹了SpringMVC多個(gè)模塊404報(bào)錯(cuò)問題及解決方案,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09