Latest web development tutorials

JSP Ausnahmebehandlung

Wenn JSP-Anwendung zu schreiben, Programmierer einige BUG verpassen kann, kann der BUG überall im Programm erscheinen. JSP-Code ist in der Regel die folgenden Kategorien Ausnahme:

  • Auf Ausnahmen: geprüfte Ausnahmen ist eine typische Benutzerfehler oder ein Programmierer unvorhergesehener Fehler. Zum Beispiel, wenn eine Datei geöffnet wird, kann aber die Datei nicht gefunden, dann wird eine Ausnahme ausgelöst. Diese Anomalien können nicht mehr kompilieren wird einfach ignoriert.
  • Runtime Ausnahme: eine Laufzeitausnahme Programmierer vermieden worden sein, diese Anomalie wird bei der Kompilierung ignoriert.
  • Fehler: Es ist keine Ausnahme, aber das Problem ist, dass es außerhalb der Kontrolle des Benutzers oder der Programmierer ist. Fehler oft im Code übersehen wird, man kann es kaum nehmen, wie. Als Beispiel, oder Stapelüberlauffehler. Diese Fehler werden bei der Kompilierung ignoriert.

In diesem Abschnitt werden ein paar einfache und elegante Art und Weise geben Laufzeit Ausnahmen und Fehler zu behandeln.


Verwenden Sie Exception-Objekte

Ausnahmeobjekt ist eine Instanz von Throwable Unterklasse, nur in der Fehlerseite. Die folgende Tabelle enthält einige der Throwable Klasse in wichtigen Punkten:

Nein . Method & Beschreibung
1 public String getMessage ()

Gibt die Ausnahme. Diese Information wird in den Konstruktor initialisiert Throwable
2 public ThrowablegetCause ()

Gibt die Ursache der Ausnahme, das Objekt vom Typ Throwable
3 public String toString ()

Gibt den Namen der Klasse
4 public void print ()

Der Ausnahme-Stack-Trace-Ausgabe zu System.err
5 public StackTraceElement [] getStackTrace ()

In der Form eines Stapels Spurenelement des Arrays gibt eine Ausnahme-Stack-Trace
6 public ThrowablefillInStackTrace ()

Die aktuelle Stack-Trace füllen Throwable Objekt

JSP bietet die Möglichkeit, Fehlerseiten für jede JSP-Seite angeben. Jedes Mal, wenn die Seite eine Ausnahme auslöst, wird JSP-Container automatisch die Fehlerseite aufrufen.

Die folgenden Beispiele main.jsp gibt eine Fehlerseite. Verwenden Sie <% @ page Errorpage = "XXXXX"%> Direktive gibt eine Fehlerseite.

<%@ 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>

Nun schreiben ShowError.jsp folgende Dokumente:

<%@ 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()); %>

Kenntnis nehmend, ShowError.jsp Datei verwendet <% @ page isErrorPage = "true"%> Richtlinie, die die JSP-Compiler sagt muss eine Ausnahme Instanzvariable zu erzeugen.

Jetzt versuchen main.jsp Seite zuzugreifen, wird es die folgenden Ergebnisse erzielt:

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

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Verwenden Sie JSTL-Tags in Fehlerseite

JSTL-Tags können verwendet werden Fehlerseite ShowError.jsp zu schreiben. Dieses Beispiel Code und Logik in dem Beispiel Code ist fast gleich, aber in diesem Fall ist der Code hat eine bessere Struktur und kann weitere 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>

Ergebnisse sind wie folgt:

jsp-exeception-1


Verwenden Sie versuchen ... catch-Block

Wenn Sie eine Seite die Ausnahmebehandlung zu setzen möchten, und für verschiedene Ausnahmen sind unterschiedlich gehandhabt, dann brauchen Sie einen try ... catch-Block zu verwenden.

Das nächste Beispiel zeigt, wie der try ... catch-Block zu verwenden, wird der Code in main.jsp platziert werden:

<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>

Versuchen Sie main.jsp zu besuchen, wird es die folgenden Ergebnisse liefern:

An exception occurred: / by zero