Как уведомлять клиента об ошибках в Serlvet?
Я делаю приложение на Servlet + ReactJS. И возникла вопрос - как именно организовать уведомление клиента о каких либо ошибках.
Я вижу только два варианта:
- В сервисном слое отлавливать исключения(которые выбрасываются вручную в коде или внутри используемых библиотек) и потом возвращать в сервлет сообщение и код результата операции
К примеру:
Servlet:
@WebServlet("/")
public class TestServlet extends HttpServlet {
SomeSerivce service= new SomeSerivce();
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Message msg=service.someDo(req.getParameter("test"));
resp.setStatus(msg.getCode());
PrintWriter printWriter = resp.getWriter();
printWriter.write(msg.getText());
}
}
Некоторый сервис,выполняющий проверку типа параметра get-запроса
public class SomeSerivce {
public Message someDo(String param){
Message msg = new Message();
try {
int a = Integer.parseInt(param);
}catch (IllegalArgumentException e){
msg.setCode(HttpServletResponse.SC_BAD_REQUEST);
msg.setText("Не верный тип параметра запроса");
return msg;
}catch (Exception e){
msg.setCode(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
msg.setText("Неизвестная ошибка");
return msg;
}
msg.setCode(HttpServletResponse.SC_OK);
msg.setText("Параметр запроса верный");
return msg;
}
}
Класс сообщения
public class Message{
private int code;
private String text;
.........
}
- Либо же никакие исключения не отлавливать и просто создать отдельные сервлеты,которые будут вызываться при появлении определенных исключений.
Имеется ввиду, использование в web.xml следующей конструкции :
<error-page> <exception-type>java.lang.IllegalArgumentException</exception-type> <location>/AppExceptionHandler</location> </error-page>
И создание сервлета для пути /AppExceptionHandler
@WebServlet("/AppExceptionHandler")
public class AppExceptionHandler extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
PrintWriter printWriter = response.getWriter();
printWriter.write("Some text");
printWriter.close();
}
}
Какой вариант лучше?Или может быть есть еще какие то?