Najlepszy samouczek obsługa wyjątków JSP W 2024 r. W tym samouczku możesz dowiedzieć się Stosowanie wyjątków Przedmioty,Używaj tagów JSTL w stronę błędu,Użyj try ... catch,
Podczas pisania aplikacji JSP, programiści mogą przegapić jakiś błąd, błąd może pojawić się w dowolnym miejscu w programie. Kod JSP jest na ogół następujące kategorie wyjątek:
Ten rozdział zawiera kilka prosty i elegancki sposób obsługi wyjątków czasu wykonywania i błędy.
obiekt wyjątku jest instancją Throwable podklasy, dostępny tylko na stronie o błędzie. W poniższej tabeli przedstawiono niektóre z Throwable klasy w ważnych sposobów:
Nie. | Sposób i opis |
---|---|
1 | public String getMessage () Zwraca wyjątek. Informacja ta jest inicjowana w Throwable konstruktora |
2 | publicznego ThrowablegetCause () Zwraca przyczyny wyjątku obiekt typu Throwable |
3 | public String toString () Zwraca nazwę klasy |
4 | public void printStackTrace () Wyjście śladu stosu wyjątku do System.err |
5 | publicznego StackTraceElement [] getStackTrace () W postaci pierwiastka śladowego stos tablicy zwraca ślad stosu wyjątku |
6 | ThrowablefillInStackTrace publicznego () Bieżący ślad stosu wypełnienie obiektu Throwable |
JSP zapewnia możliwość określenia stron błędów dla każdej strony JSP. Ilekroć strona zgłasza wyjątek, kontener JSP automatycznie wezwać stronę błędu.
Poniższe przykłady main.jsp określa stronę błędu. Użyj <% @ page errorPage = "XXXXX"%> Dyrektywa określa stronę błędu.
<%@ 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>
Teraz napiszcie ShowError.jsp następujące dokumenty:
<%@ page isErrorPage="true" %> <html> <head> <title>Show Error Page</title> </head> <body> <h1>Oppspl.</h1> <p>Sorry, an error occurred.</p> <p>Here is the exception stack trace: </p> <pre> <% exception.printStackTrace(response.getWriter()); %>
Stwierdzając, ShowError.jsp wykorzystuje plik <% @ page isErrorPage = "true"%> Dyrektywa, która informuje kompilator JSP musi wygenerować zmienną instancji wyjątku.
Teraz próbują uzyskać dostęp do strony main.jsp, będzie produkować następujące wyniki:
java.lang.RuntimeException: Error condition!!! plplpl Oppspl. Sorry, an error occurred. Here is the exception stack trace:
tagi JSTL może być używany do pisania strona błędu ShowError.jsp. W tym przykładzie kodu i układ logiczny w przykładzie kodu jest prawie taka sama, ale w tym przypadku kod ma lepszą strukturę, może dostarczać więcej informacji:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@page isErrorPage="true" %> <html> <head> <title>Show Error Page</title> </head> <body> <h1>Oppspl.</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>
Wyniki przedstawiają się następująco:
Jeśli chcesz umieścić stronę obsługę wyjątków, i dla różnych wyjątków są traktowane inaczej, to trzeba użyć bloku try pl. catch.
Następny przykład pokazuje, jak używać bloku try pl. catch, kod zostanie umieszczony w main.jsp:
<html> <head> <title>Trypl.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>
Spróbuj odwiedzić main.jsp, będzie produkować następujące wyniki:
An exception occurred: / by zero