Непредсказуемый результат

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
 throws ServletException, IOException {
 response.setContentType("text/html;charset=UTF-8");
 PrintWriter out = response.getWriter();
 try {

 out.println("");

 out.println("");
 out.println("");
 String err[]=(String[]) request.getAttribute("error");

 *

Массив ошибок Strings отправляется со следующей страницы и получен в этом. Однако, если я попытаюсь поместить цикл for с тем же кодом, который указан ниже здесь, в этом месте, то нет даже отображения полей формы, я понимаю, почему я использую Netbeans Ide и имя сервлета: -form, addLeague nad success

*

out.println("<form action="addLeague" method="post">");
 out.println("name: ");
 out.println("Season: ");
 out.println("year ");
 out.println("submit:");
 out.println("</form>");
 for(int i=0;i<=3;i++)
 {
 if(err[i]!=null)
 out.println("<h2>"+err[i]+"</h2>");
 }
 out.println("");
 out.println("");



 } 

 catch(Exception e)
 {

 }


 finally { 
 out.close();
 }
}
1 ответ

Это может быть лучше, но быть предупрежденным, что catching Exception в значительной степени гарантированно причиняет вам боль, чем это стоит. Вы должны просто перехватывать исключения, которые на самом деле происходят.

Если вы получаете, например, NullPointerException или ArrayIndexOutOfBoundsException, добавьте некоторый код, чтобы сохранить его. В вашем случае это означало бы изменение i<=3 до i <= err.length для последнего.

Если вам нужно поймать какое-то условие, поймайте конкретное исключение. Например, NumberFormatException или ParseException являются общими исключениями, которые необходимо поймать. Затем вы можете дать разобранному выводу определенное значение по умолчанию (например, 0 для числа) или показать пользователю сообщение об ошибке.

try {
 out.println("");
 out.println("");
 out.println("");

 String err[]=(String[]) request.getAttribute("error");
 try {
 for(int i=0;i<=3;i++) {
 if(err[i]!=null)
 out.println("<h2>"+err[i]+"</h2>");
 }
 } catch (Exception e) { // This is a bad idea. Use a specific exception.
 e.printStackTrace();
 }

 out.println("<form action="addLeague" method="post">");
 out.println("name: ");
 out.println("Season: ");
 out.println("year ");
 out.println("submit:");
 out.println("</form>");
 out.println("");
 out.println("");
} catch(Exception e) { // Its a bad idea down here too
 e.printStackTrace();
} finally { 
 out.close();
}

licensed under cc by-sa 3.0 with attribution.