У меня есть что-то вроде этого:
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
public class MyCustomExceptionA extends RuntimeException {
public MyCustomExceptionA(String message) {
super(message);
}
}
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public class MyCustomExceptionB extends RuntimeException {
public MyCustomExceptionA(String message){
super(message);
}
}
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
public class MyCustomExceptionC extends RuntimeException {
public MyCustomExceptionA(String message) {
super(message);
}
}
@ControllerAdvice
public class SomeClass {
@ExceptionHandler(MyCustomExceptionA.class)
public ResponseEntity<ExceptionResponse> method1(MyCustomExceptionA ex){
ExceptionResponse response = new ExceptionResponse(401, ex.getMessage())
return new ResponseEntity<>(response, HttpStatus.UNAUTHORIZED);
}
method2 for MyCustomExceptionB
method3 for MyCustomExceptionC
}
Я делаю повторный вызов Jax-RS для получения ответа
try{
Response response = ClientBuilder.newCLient().target("someURL").path("somePath").get();
if (response.getStatus() == 400){
throw new MyCustomExceptionB("some Error message") <-- this don't get thrown
}else if (response.getStatus() == 401){
throw new MyCustomExceptionA("some Error message") <-- this don't get thrown
}else if (response.getStatus() == 404){
throw new MyCustomExceptionC("some Error message") <-- this don't get thrown
}catch(Exception ex){
log.error("something happened ....")
throw new Exception("message") <-- this overrides above exceptions
}
, когда я пытаюсь выдать пользовательские исключения для 400, 401 или 404 все равно выдает исключение из блока catch .. почему ?? Я отлаживал через него, и он переходит к соответствующим кодам состояния (400, 401 или 404), но в конце все равно выдает исключение из блока catch -> Что я делаю неправильно !!