JSP Exception, Come gestire le eccezioni in una Java Server Page

Java Server Page Tutorial

Durante l’esecuzione di pagine JSP, possono verificarsi errori. Questi errori possono essere classificati in diversi tipi. 

Il concetto di gestione delle eccezioni a JSP è simile a Java, dove le eccezioni vengono gestite utilizzando i blocchi try-catch. 

In questo post approfondiremo il concetto di gestione delle JSP Exception.

Le JSP Exception

Le JSP Exception possono essere definite come un oggetto lanciato durante l’esecuzione di un programma. La gestione delle eccezioni è la pratica di gestione degli errori in fase di esecuzione. Eccezioni possono verificarsi in qualsiasi momento in un’applicazione web. Pertanto, lo sviluppatore web deve gestire le eccezioni per essere al sicuro e far funzionare l’utente in modo impeccabile sul web.

JSP Exception Implicit Object

  • Viene implementato un oggetto implicito di eccezione per gestire le eccezioni e visualizzare i messaggi di errore.
  • L’oggetto implicito dell’eccezione è un’istanza della classe java.lang.Throwable .
  • È disponibile solo per le pagine JSP, con il valore isErrorPage impostato su “True”. Ciò significa che gli oggetti Exception possono essere utilizzati solo nelle pagine di errore.

Ci sono tre tipi di eccezioni in JSP:

  • Eccezione controllata
  • Eccezione di runtime
  • Errori Eccezione

Eccezioni controllate

“Eccezioni controllate” sono un tipo di eccezione che di solito è un errore dell’utente o un problema che non può essere previsto dal programmatore. Questo tipo di eccezione viene verificato in fase di compilazione. Di seguito è riportato un elenco di alcune comuni “Eccezioni verificate” che si verificano nel dominio di programmazione:

  • Eccezione IO : questo è un esempio di eccezione verificata in cui possono verificarsi alcune eccezioni durante la lettura e la scrittura di un file. Se il formato del file non è supportato, si verificherà l’eccezione IO.
  • FileNotFoundException : questo è un esempio di un’eccezione verificata in cui un file in cui è necessario scrivere i dati non si trova in quel particolare percorso sul disco.
  • SQLException : questo è anche un esempio di eccezione verificata in cui il file è associato a un database SQL. L’eccezione si verificherà in caso di problemi o problemi con la connettività del database SQL.

Eccezioni di runtime

Le “Eccezioni di runtime” possono essere definite come eccezioni eluse dal programmatore. Passano inosservati al momento della compilazione. Ecco l’elenco di alcuni degli esempi comuni che si sono verificati nel dominio di programmazione:

  • ArrayIndexOutOfBoundsException : questa è un’eccezione di runtime; Ciò si verifica quando la dimensione della matrice va oltre gli elementi o il valore dell’indice impostato.
  • NullPointer Exception : questo è anche un esempio di un’eccezione di runtime sollevata quando una variabile o un oggetto è vuoto o nullo e utenti o programmatori tentano di accedervi.
  • ArithmeticException : questo è un esempio di eccezione di runtime quando un’operazione matematica non è consentita in circostanze normali. Un esempio comune di tale scenario è dividere il numero per 0.

Errori

“Eccezione errore” si verifica esclusivamente a causa dell’utente o del programmatore. Qui potresti riscontrare un errore a causa di overflow dello stack. Ecco l’elenco di alcuni degli esempi comuni che si sono verificati nel dominio di programmazione:

  • Errore : questa è una sottoclasse di throwable che indica seri problemi che le applicazioni non possono rilevare.
  • Errore interno : questo errore si verifica quando si verifica un errore nella Java Virtual Machine (JVM).
  • Errore di istanza : questo errore si verifica quando si tenta di creare un’istanza di un oggetto, senza riuscirci.

Esempio di Eccezione Aritmetica

Scriviamo il seguente file html che attiveremo via browser da client

<!DOCTYPE html>
<html>
    <head>
        <title>Enter two Integers for Division</title>
    </head>
    <body>
        <form action="division.jsp">
            First Integer: <input type="text" name="numberone" /><br />
            Second Integer: <input type="text" name="numbertwo" /><br />
            <input type="submit" value="Division" />
        </form>
    </body>
</html>

Scriviamo il seguente file division.jsp da mettere su server. Da notare la prima riga dove si specifica il nome del file da invocare nel caso in cui si verifica una eccezione sulla pagina division.jsp.

<%@ page errorPage="exception_file.jsp" %>
  
<% 
String number1 = request.getParameter("numberone"); 
String number2 = request.getParameter("numbertwo"); 
int v1 = Integer.parseInt(num1);
int v2 = Integer.parseInt(num2);
int result = v1 / v2;
out.print("Division is: " + result);
%>

Scriviamo il seguente file exception_file.jsp che dovrà essere memorizzato su server per l’attivazione della pagina jsp in caso di errore. Da notare il metodo getMessage dell’oggetto implicito exception.

<%@ page isErrorPage='true' %>
  
<% 
out.print("Error Message : ");  
out.print(exception.getMessage());
%>

Metodi dell’oggetto implicito JSP Exception

L’oggetto eccezione è un’istanza di una sottoclasse di Throwable ed è disponibile solo nelle pagine di errore. Di seguito l’elenco dei metodi disponibili nella classe Throwable:

  • public String getMessage(): Returns a detailed message about the exception that has occurred. This message is initialized in the Throwable constructor.
  • public Throwable getCause(): Returns the cause of the exception as represented by a Throwable object.
  • public String toString(): Returns the name of the class concatenated with the result of getMessage().
  • public void printStackTrace(): Prints the result of toString() along with the stack trace to System.err, the error output stream.
  • public StackTraceElement [] getStackTrace(): Returns an array containing each element on the stack trace. The element at index 0 represents the top of the call stack, and the last element in the array represents the method at the bottom of the call stack.
  • public Throwable fillInStackTrace(): Fills the stack trace of this Throwable object with the current stack trace, adding to any previous information in the stack trace.

JSP offre un’opzione per specificare la pagina di errore per ogni JSP. Ogni volta che la pagina genera un’eccezione, il contenitore JSP richiama automaticamente la pagina di errore.

Di seguito è riportato un esempio per specificare una pagina di errore per un main.jsp. Per impostare una pagina di errore, utilizzare la direttiva <%@ page errorPage = “xxx” %>.

<%@ 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 now!!!");
         }
      %>
   </body>
</html>

Di seguito il JSP per la gestione degli errori ShowError.jsp. La pagina di gestione degli errori include la direttiva <%@ page isErrorPage = “true” %>. Questa direttiva fa sì che il compilatore JSP generi la variabile di istanza dell’eccezione.

<%@ page isErrorPage = "true" %>

<html>
   <head>
      <title>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()); %></pre>
   </body>
</html>

Autore