2013-11-22 5 views
0

У меня есть JSP с несколькими полями, одна из которых - дата, серверная сторона - как сервлеты. У меня есть проверка даты на стороне клиента, и я хочу сделать проверку даты на стороне сервера.Обработка исключений в сервлете

У меня есть метод, который преобразует дату из строки, которая получена из запроса.

public static Date convertToDate (String s) throws ParseException { 
    return formatter.parse(s); 
} 

Я использую этот метод с Try/уловом

try { 
    Date date = Utils.convertToDate(request.getParameter("Date"))); 
} catch (ParseException e) { 
    //throw what? new Exception or ParseException or something else 
    throw new ParseException (request.getParameter("Date")+ "is not a Date"); 
} 

Наконец, я обрабатывать исключение в контроллере сервлета как

try { 
     //some methods that use method convertToDate 
    } catch (SomeException e) { //required right exception 
     response.sendError(HttpServletResponse.SC_BAD_REQUEST, e.getMessage()); 
     return; 
} 

Вопросы. Должен ли я создавать новое ParseException для добавления информации или создания нового исключения, такого как IncorrectDateException? Существуют ли более подходящие варианты обработки исключений?

Спасибо.

ответ

0

Стандартный способ сделать это с помощью doXxx() метода Servlet (например, doGet(), doPost() и т. Д.) Выкинуть ServletException и разрешить контейнеру поймать и обработать его. Вы можете указать страницу ошибки будут показаны в WEB-INF/web.xml с помощью тега:

<error-page> 
    <error-code>500</error-code> 
    <location>/error.jsp</location> 
</error-page> 

Если вы в конечном итоге ловить Exception, вы не можете элегантно обрабатывать, просто обернуть его в ServletException как это:

try { 
    // code that throws an Exception 
} catch (Exception e) { 
    throw new ServletException(e); 
} 
+0

Спасибо за ответ. Для этого подходит исключение сервлетов? Я хочу сделать HttpServletResponse.SC_BAD_REQUEST (код ошибки 400), который указывает неверный запрос клиента. – user3017797

Смежные вопросы