Rest 来自客户端的Springboot ExceptionHandler捕获
我开发了一个Spring启动项目,并使用ExceptionHandler捕获带有Rest 来自客户端的Springboot ExceptionHandler捕获,rest,spring-boot,exception-handling,Rest,Spring Boot,Exception Handling,我开发了一个Spring启动项目,并使用ExceptionHandler捕获带有@RestControllerAdvice注释的所有异常。 服务器端捕获异常没有问题。 然而,我不知道如何在客户端应用程序中捕获这些异常 您能帮助我吗?在客户端,您可能正在使用HTTP客户端(例如Spring的RestTemplate或Apache Commons'HttpClient)。也许是这样的: ResponseEntity<String> response = restTemplate.getF
@RestControllerAdvice
注释的所有异常。
服务器端捕获异常没有问题。
然而,我不知道如何在客户端应用程序中捕获这些异常
您能帮助我吗?在客户端,您可能正在使用HTTP客户端(例如Spring的
RestTemplate
或Apache Commons'HttpClient
)。也许是这样的:
ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
因此,您通过RestControllerAdvice
提供的任何状态代码和响应正文都可以从响应中读取
典型的方法是评估HttpStatus是否为200
,如果不是,则落入异常处理块,使用响应体了解异常的性质。如果使用的是'sRestTemplate
,下面是一个示例:
try {
ResponseEntity<String> response = new RestTemplate().getForEntity(url, String.class);
System.out.println("Response: " + response.getBody());
} catch (HttpStatusCodeException e) {
System.err.println("Problem querying " + url + ". " +
"Status code " + e.getStatusCode() +
" and error message " + e.getResponseBodyAsString());
}
试试看{
ResponseEntity response=new restemplate().getForEntity(url,String.class);
System.out.println(“响应:+Response.getBody());
}捕获(HttpStatusCodeException){
System.err.println(“查询问题”+url+”+
“状态代码”+e.getStatusCode()+
“和错误消息”+e.getResponseBodyAsString());
}
请注意,默认情况下,restemplate
会为错误状态代码引发异常,因此您需要捕获HttpStatusCodeException
虽然并非所有错误都是
HttpStatusCodeException
,但它们都以RestClientException
为父级,如果确实需要,您也可以捕获它。您使用的是什么客户端?RestTemplate?是的,它是RestTemplate,然后在使用RestTemplate时使用try-catch块。捕获RestClientException并根据需要进行处理。谢谢Gondy,它会起作用:)谢谢Glitch,您的解决方案拯救了我的一天。
try {
ResponseEntity<String> response = new RestTemplate().getForEntity(url, String.class);
System.out.println("Response: " + response.getBody());
} catch (HttpStatusCodeException e) {
System.err.println("Problem querying " + url + ". " +
"Status code " + e.getStatusCode() +
" and error message " + e.getResponseBodyAsString());
}