亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Resttemplate異常處理

Spring Resttemplate異常處理

30秒到達戰場 2019-11-12 14:43:10
下面是代碼片段;基本上,當錯誤代碼不是200時,我正在嘗試傳播異常。ResponseEntity<Object> response = restTemplate.exchange(url.toString().replace("{version}", version),                    HttpMethod.POST, entity, Object.class);            if(response.getStatusCode().value()!= 200){                logger.debug("Encountered Error while Calling API");                throw new ApplicationException();            }但是,如果服務器發出500響應,我將收到異常org.springframework.web.client.HttpServerErrorException: 500 Internal Server Error    at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-4.2.3.RELEASE.jar:4.2.3.RELEASE]我真的需要在嘗試中包裝其余模板交換方法嗎?那么代碼的目的是什么?
查看完整描述

3 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

您想要創建一個實現的類,ResponseErrorHandler然后使用它的一個實例來設置其余模板的錯誤處理:


public class MyErrorHandler implements ResponseErrorHandler {

  @Override

  public void handleError(ClientHttpResponse response) throws IOException {

    // your error handling here

  }


  @Override

  public boolean hasError(ClientHttpResponse response) throws IOException {

     ...

  }

}


[...]


public static void main(String args[]) {

  RestTemplate restTemplate = new RestTemplate();

  restTemplate.setErrorHandler(new MyErrorHandler());

}

此外,Spring還提供了一個類DefaultResponseErrorHandler,您可以擴展該類而不是實現接口,以防萬一您只想覆蓋該handleError方法。


public class MyErrorHandler extends DefaultResponseErrorHandler {

  @Override

  public void handleError(ClientHttpResponse response) throws IOException {

    // your error handling here

  }

}

查看其源代碼,以了解Spring如何處理HTTP錯誤。


查看完整回答
反對 回復 2019-11-12
  • 3 回答
  • 0 關注
  • 3674 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號