Latest web development tutorials

la gestione delle eccezioni JSP

Quando si scrive applicazione JSP, i programmatori possono perdere alcune segnalazione, il bug può essere visualizzato in qualsiasi parte del programma. codice JSP è generalmente il seguente eccezione categorie:

  • eccezioni controllate: eccezioni controllate è un errore di utente tipico o un programmatore errori imprevisti. Ad esempio, se un file deve essere aperto, ma non riesce a trovare il file, allora viene generata un'eccezione. Queste anomalie possono più compilare viene semplicemente ignorato.
  • eccezione di runtime: un runtime i programmatori di eccezioni possono essere stati evitati, questa anomalia viene ignorato al momento della compilazione.
  • Errore: Non c'è eccezione, ma il problema è che è oltre il controllo dell'utente o del programmatore. Errore è spesso trascurato nel codice, difficilmente si può prendere come. A titolo di esempio, o errore di overflow dello stack. Questi errori vengono ignorati in fase di compilazione.

Questa sezione darà un modo che pochi semplice ed elegante per gestire le eccezioni di runtime e gli errori.


Usa eccezione oggetti

oggetto eccezione è un'istanza di sottoclasse Throwable, disponibile solo nella pagina di errore. La seguente tabella elenca alcuni della classe Throwable in modo importante:

No. Metodo & descrizione
1 public String getMessage ()

Restituisce l'eccezione. Questa informazione viene inizializzata nel costruttore di Throwable
2 ThrowablegetCause pubblico ()

Restituisce la causa dell'eccezione, l'oggetto di tipo Throwable
3 Public String toString ()

Restituisce il nome della classe
4 printStackTrace public void ()

L'uscita dello stack eccezione di traccia System.err
5 pubblico StackTraceElement [] getStackTrace ()

Nella forma di un elemento pila traccia della matrice restituisce un stack eccezione
6 ThrowablefillInStackTrace pubblico ()

L'attuale analisi dello stack di riempimento oggetto Throwable

JSP fornisce l'opzione per specificare le pagine di errore per ogni pagina JSP. Ogni volta che la pagina genera un'eccezione, container JSP chiamerà automaticamente la pagina di errore.

Gli esempi che seguono main.jsp specifica una pagina di errore. Utilizzare <% @ Page ErrorPage = "XXXXX"%> direttiva specifica una pagina di errore.

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

Ora, scrivere ShowError.jsp seguenti documenti:

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

Notando, utilizza il file ShowError.jsp <% @ page isErrorPage = "true"%> direttiva, che dice al compilatore JSP deve generare una variabile di istanza un'eccezione.

Ora tenta di accedere alla pagina main.jsp, esso produrrà i seguenti risultati:

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

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Utilizzare i tag JSTL nella pagina di errore

tag JSTL possono essere utilizzati per scrivere pagina di errore ShowError.jsp. Questo codice di esempio e logico nel codice esempio è quasi lo stesso, ma in questo caso il codice ha una struttura migliore, e possono fornire ulteriori informazioni:

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

I risultati sono i seguenti:

jsp-exeception-1


Utilizzare blocco try ... catch

Se si vuole mettere una pagina di gestione delle eccezioni, e per le diverse eccezioni vengono gestite in modo diverso, quindi è necessario utilizzare un blocco try ... catch.

Il prossimo esempio mostra come utilizzare il blocco try ... catch, il codice sarà messo in 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>

Provate a visitare main.jsp, esso produrrà i seguenti risultati:

An exception occurred: / by zero