Latest web development tutorials

обработка исключений JSP

При написании приложения JSP, программисты могут пропустить некоторые ошибки, то ошибка может появиться в любом месте в программе. JSP-код, как правило, следующие категории исключений:

  • Проверяемые исключения: проверяемые исключения является типичной ошибки пользователя или программист непредвиденные ошибки. Например, если файл будет открыт, но не может найти файл, то генерируется исключение. Эти аномалии больше не могут компиляции просто игнорируется.
  • Продолжительность исключение: исключение времени выполнения программисты, возможно, было бы избежать, эта аномалия будет игнорироваться во время компиляции.
  • Ошибка: Там не исключение, но проблема в том, что она находится вне контроля пользователя или программиста. Ошибка часто забывают в коде, вы вряд ли принять его как. В качестве примера, или ошибка переполнения стека. Эти ошибки будут проигнорированы во время компиляции.

Этот раздел даст несколько простой и элегантный способ обработки исключений во время выполнения и ошибок.


Использование исключений Объекты

Объект исключения является экземпляром Throwable подкласса, доступна только на странице ошибки. В следующей таблице перечислены некоторые из Throwable класса в важных направлениях:

Нет . Метод и описание
1 Строка GetMessage общественности ()

Возвращает исключение. Эта информация инициализируется в конструкторе Throwable
2 общественного ThrowablegetCause ()

Возвращает причину исключения, объект типа Throwable
3 общественного Строка ToString ()

Возвращает имя класса
4 общественного недействительными printStackTrace ()

Выходной сигнал стека исключений трассировки System.err
5 общественного StackTraceElement [] getStackTrace ()

В форме трассировки стека элемент массива возвращает стека исключений трассировки
6 общественного ThrowablefillInStackTrace ()

В настоящее время трассировки стека заполнить объект Throwable

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

Следующие примеры main.jsp указывает страницу ошибки. Используйте <% @ страницы errorPage = "ХХХХХ"%> директива указывает на страницу с ошибкой.

<%@ page errorPage="ShowError.jsp" %>

<html>
<head>
   <title>Error Handling Example</title>
</head>
<body>
<%
   // Throw an exception to invoke the error page
   int x = 1;
   if (x == 1)
   {
      throw new RuntimeException("Error condition!!!");
   }
%>
</body>
</html>

Теперь, пишут ShowError.jsp следующие документы:

<%@ page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<p>Sorry, an error occurred.</p>
<p>Here is the exception stack trace: </p>
<pre>
<% exception.printStackTrace(response.getWriter()); %>

Принимая во внимание, ShowError.jsp использует файл <% @ страница isErrorPage = "истина"%> директива, которая говорит компилятор JSP должен генерировать переменную экземпляра исключения.

Теперь попробуйте открыть страницу main.jsp, он будет производить следующие результаты:

java.lang.RuntimeException: Error condition!!!
......

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Использование JSTL тегов в страницу ошибки

JSTL метки могут быть использованы для записи страницы ошибок ShowError.jsp. Этот пример кода и логики в коде примера почти то же самое, но в этом случае код имеет лучшую структуру, и может предоставить более подробную информацию:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page isErrorPage="true" %>
<html>
<head>
<title>Show Error Page</title>
</head>
<body>
<h1>Opps...</h1>
<table width="100%" border="1">
<tr valign="top">
<td width="40%"><b>Error:</b></td>
<td>${pageContext.exception}</td>
</tr>
<tr valign="top">
<td><b>URI:</b></td>
<td>${pageContext.errorData.requestURI}</td>
</tr>
<tr valign="top">
<td><b>Status code:</b></td>
<td>${pageContext.errorData.statusCode}</td>
</tr>
<tr valign="top">
<td><b>Stack trace:</b></td>
<td>
<c:forEach var="trace" 
         items="${pageContext.exception.stackTrace}">
<p>${trace}</p>
</c:forEach>
</td>
</tr>
</table>
</body>
</html>

Результаты следующие:

exeception-JSP-1


Используйте попробовать ... поймать блок

Если вы хотите поместить обработку исключений страницы, а также для различных исключений обрабатываются по-другому, то вам нужно использовать Try ... Catch блок.

В следующем примере показано, как использовать блок Try ... Catch, код будет размещен в main.jsp:

<html>
<head>
   <title>Try...Catch Example</title>
</head>
<body>
<%
   try{
      int i = 1;
      i = i / 0;
      out.println("The answer is " + i);
   }
   catch (Exception e){
      out.println("An exception occurred: " + e.getMessage());
   }
%>
</body>
</html>

Попробуйте посетить main.jsp, он будет производить следующие результаты:

An exception occurred: / by zero