Resty-GWT и HandlerExceptionResolver: как мне работать с особыми случаями?
Я использую GWT и Resty для своего веб-приложения.
Мне нужно рассматривать два исключения как особые случаи и передавать дополнительную информацию клиенту. Ранее они были обработаны методом Resty onFailure() следующим образом:
getClientFactory().getRequest().restyMethod(id,
new MethodRecipient<DataDTO>() {
@Override
public void onSuccess(Method method, DataDTO response) {
// do stuff
}
@Override
public void onFailure(Method method, Throwable ex) {
if (ex.getMessage().endsWith("exception message 1")) {
getClientFactory().getAppController().showRestFatalError("Message 1", "Title 1", errorMsg);
} else if (ex.getMessage().endsWith("exception message 2")) {
getClientFactory().getAppController().showRestFatalError("Message 2", "Title 2", errorMsg);
} else {
// else fall back to a friendly but vague "something else went wrong"
getClientFactory().getAppController().showRestFatalError("Unexpected error", "Unexpected Error", errorMsg);
}
}
});
Чтобы перехватить и записать в журнал все исключения, прежде чем они попадут к клиенту, я реализовал собственный Spring MVC HandlerExceptionResolver следующим образом:
У меня есть пользовательский HandlerExceptionResolver для регистрации ошибок контроллера, как показано ниже:
@Component
public class LoggingHandlerExceptionResolver extends AbstractHandlerExceptionResolver {
private final Logger logger = LoggerFactory.getLogger(LoggingHandlerExceptionResolver.class);
@Override
public ModelAndView doResolveException(HttpServletRequest aReq, HttpServletResponse aRes, Object aHandler, Exception ex) {
logger.error("Server exception thrown", ex);
return null; // trigger other HandlerExceptionResolvers
}
}
При использовании HandlerExceptionResolver клиенту передается только код состояния 500. Как получить два особых случая, которые будут распознаны методом onFailure()?