Spring Boot zeigt keinen benutzerdefinierten Fehler an, wenn eine Ausnahme ausgelöst wirdJava

Java-Forum
Anonymous
 Spring Boot zeigt keinen benutzerdefinierten Fehler an, wenn eine Ausnahme ausgelöst wird

Post by Anonymous »

Ich bin relativ neu in der Java/Spring-Domäne und versuche, @ControllerAdvice in meiner Spring Boot-Anwendung zu verwenden. Das ControllerAdvice fängt die Ausnahme ab, zeigt aber meine benutzerdefinierte Antwort nicht an.

Es folgt der Schnappschuss von RestController, der die Ausnahme auslöst

Code: Select all

ResponseEntity response = new ResponseEntity(HttpStatus.OK);

try {
response = restTemplate.exchange(url, HttpMethod.GET, entity, MyClass.class);
} catch (HttpClientErrorException  ex) {
throw ex;
}catch (HttpServerErrorException   ex) {
logger.debug(ex.getMessage() + " Server Status Code - " + ex.getStatusCode());
}
catch(Exception ex) {
logger.debug(ex.getMessage() + " Generic Exception ");
}
Es folgt das @ControllerAdvice

Code: Select all

@ControllerAdvice
public class GlobalExceptionHandler extends Exception {

@ExceptionHandler(HttpClientErrorException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse errorHandle(HttpClientErrorException ex) {

String responseBody = ex.getResponseBodyAsString();

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
ErrorResponse errorResponse = new ErrorResponse();
try {
errorResponse = mapper.readValue(responseBody, ErrorResponse.class);

} catch (JsonMappingException e) {
e.printStackTrace();
} catch (JsonProcessingException e) {
e.printStackTrace();
}
return errorResponse;
}
}
und andere Klassen

Code: Select all

@JsonIgnoreProperties
public class ErrorResponse {
@JsonProperty("error")
public Error error;

@JsonProperty("version")
public String version;

}

public class Error {
@JsonProperty("code")
public String Code;

@JsonProperty("message")
public String Message;

public String getCode() {
return Code;
}

public void setCode(String code) {
Code = code;
}

public String getMessage() {
return Message;
}

public void setMessage(String message) {
Message = message;
}

}
Der Fehler, den ich bei der Verwendung von POSTMAN erhalte, ist

Code: Select all

{
"timestamp": "2019-11-20T05:42:24.126+0000",
"status": 404,
"error": "Not Found",
"message": "400 Bad Request",
"path": "myApi/somecontroller"
}
und der Fehler, den ich im Browser erhalte, ist wie folgt

Code: Select all

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.

Tue Nov 19 23:40:26 CST 2019
There was an unexpected error (type=Not Found, status=404).
400 Bad Request
Irgendwelche Ideen/Vorschläge, warum dieses Verhalten auftritt? Ich habe eine JSON-Darstellung der ErrorResponse-Klasse erwartet.

Update

Image

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post