в приложении rest API тип возвращаемого значения метода обработки исключений должен быть ResponseEntity или аннотировать метод @ResponseBody, чтобы Spring Boot мог выполнять сериализацию HTTP.
ОБНОВЛЕНИЕ
стартовый класс:
Код: Выделить всё
@SpringBootApplication
@ComponentScan
@EnableAutoConfiguration
@EnableConfigurationProperties
@EnableTransactionManagement//TODO remove this line if not needed
public class Application extends SpringBootServletInitializer{
private static Class applicationClass= Application.class;
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return builder.sources(applicationClass);
}
}
Как я следовал руководству из официального документа Spring, https://spring.io/blog/2013/11/01/Excep ... spring-mvc, для глобальной обработки исключений просто добавьте класс обработчика с помощью @ControllerAdivce с аннотацией. Но когда я тестирую его, метод обработки исключений не вызывается при возникновении RunTimeException.
Вот мой код:
Код: Выделить всё
@ControllerAdvice
public class GlobalDefaultExceptionHandler {
@ExceptionHandler(value = RuntimeException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public RestEntity handleException(HttpServletRequest req, RuntimeException ex) {
RestEntity restEntity=new RestEntity();
Message message=new Message();
message.setCode(1000);
message.setMessage("Something wrong with the server");
restEntity.setMessage(message);
return restEntity;
}
}
Оказывается, это не работает. Я что-то здесь упустил??
А сейчас, в качестве обходного пути, я просто добавляю @RestControoler в GlobalDefaultExceptionHandler, и все работает нормально. Не знаю, почему...
Кто-нибудь может помочь?
Подробнее здесь: https://stackoverflow.com/questions/303 ... out-having
Мобильная версия