English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Wenn Sie ein JSP-Programm schreiben, könnten Programmierer einige BUGS übersehen, die an jedem Ort des Programms auftreten könnten. In JSP-Code gibt es in der Regel folgende Arten von Ausnahmen:
In diesem Abschnitt werden einige einfache und elegante Methoden zur Behandlung von Laufzeitfehlern und Fehlern vorgestellt.
Das exception-Objekt ist ein Beispiel für eine Subklasse von Throwable und ist nur auf der Fehlerseite verfügbar. Die folgenden Tabelle zeigt einige wichtige Methoden der Throwable-Klasse:
Nummer | Methode&Beschreibung |
---|---|
1 | public String getMessage() Geben Sie die Informationen der Ausnahme zurück. Diese Informationen werden im Konstruktor von Throwable initialisiert |
2 | public Throwable getCause() Geben Sie die Ursache der Ausnahme zurück, die als Throwable-Objekt vom Typ ist |
3 | public String toString() Geben Sie den Klassennamen zurück |
4 | public void printStackTrace() Schreiben Sie den Ausnahme-Stack-Trace auf System.err |
5 | public StackTraceElement [] getStackTrace() Geben Sie die Ausnahme-Stack-Trace in Form eines Arrays von Stack-Trace-Elementen zurück |
6 | public Throwable fillInStackTrace() Füllen Sie das Throwable-Objekt mit dem aktuellen Stack-Trace |
JSP bietet Optionen, um für jede JSP-Seite eine Fehlerseite zu spezifizieren. Jedes Mal, wenn eine Seite eine Ausnahme wirft, ruft der JSP-Container automatisch die Fehlerseite auf.
Der folgende Beispielweist für main.jsp eine Fehlerseite zu. Eine Fehlerseite wird mit der Anweisung <%@page errorPage="XXXXX"%> festgelegt.
<%@ page errorPage="ShowError.jsp" %> <html> <head> <title>Fehlerbehandlung Beispiel</title> </head> <body> <% // Werfen Sie eine Ausnahme, um die Fehlerseite aufzurufen int x == 1; if (x == 1) { throw new RuntimeException("Error condition!!!"); } %> </body> </html>
Schreiben Sie nun die Datei ShowError.jsp wie folgt:
<%@ page isErrorPage="true" %> <html> <head> <title>Show Error Page</title> </head> <body> <h1>Opps...</h1> <p>Entschuldigung, es ist ein Fehler aufgetreten.</p> <p>Hier ist der Ausnahme-Stack Trace: </p> <pre> <% exception.printStackTrace(response.getWriter()); %>
Beachten Sie, dass die Datei ShowError.jsp die Anweisung <%@page isErrorPage="true"%> verwendet, die dem JSP-Compiler mitteilt, dass ein Ausnahmebeispielvariable erzeugt werden soll.
Versuchen Sie nun, die main.jsp-Seite aufzurufen, es wird das folgende Ergebnis erzeugt:
java.lang.RuntimeException: Error condition!!! ...... Opps... Entschuldigung, es ist ein Fehler aufgetreten. Hier ist der Ausnahme-Stack Trace:
Man kann JSTL-Tags verwenden, um die Fehlerseite ShowError.jsp zu schreiben. Der Code in diesem Beispiel ist fast gleich dem des vorherigen Beispiels, aber der Code hat eine bessere Struktur und kann mehr Informationen liefern:
<%@ 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>
Laufende Ergebnisse:
Wenn Sie die Fehlerbehandlung auf einer Seite platzieren möchten und verschiedene Ausnahmen unterschiedlich behandeln möchten, dann müssen Sie try…catch-Blöcke verwenden.
Der folgende Beispiel zeigt, wie man try…catch-Blöcke verwendet, diese Codes in main.jsp platzieren:
<html> <head> <title>Try...Catch Beispiel</title> </head> <body> <% try{ int i = 1; i = i / 0; out.println("Die Antwort ist ") + i); } catch (Exception e){ out.println("Ein Ausnahme ist aufgetreten: ") + e.getMessage()); } %> </body> </html>
Versuchen Sie, main.jsp zu besuchen, es wird wie folgt resultieren:
Ein Ausnahme ist aufgetreten: / von zero