Latest web development tutorials

manipulação de exceção JSP

Ao escrever aplicativos JSP, os programadores podem perder alguns bug, este pode aparecer em qualquer parte do programa. código JSP é geralmente a seguinte exceção categorias:

  • As exceções verificadas: exceções verificadas é um erro do usuário típico ou um programador de erros imprevistos. Por exemplo, se um arquivo é para ser aberto, mas não consegue encontrar o arquivo, em seguida, uma exceção é lançada. Estas anomalias podem não compilar é simplesmente ignorado.
  • exceção tempo de execução: um tempo de execução programadores de exceção pode ter sido evitada, esta anomalia será ignorada em tempo de compilação.
  • Erro: Não há nenhuma exceção, mas o problema é que ele está fora do controle do usuário ou programador. De erro é frequentemente esquecido no código, você dificilmente pode tomá-lo como. A título de exemplo, ou um erro de excesso de pilha. Esses erros serão ignorados em tempo de compilação.

Esta seção dará uma maneira que poucos simples e elegante para lidar com exceções de tempo de execução e erros.


Use exceção Objects

objeto de exceção é uma instância da subclasse Throwable, disponível apenas na página de erro. A tabela a seguir lista alguns da classe Throwable em aspectos importantes:

Não. Method & descrição
1 Cadeia getMessage pública ()

Retorna a exceção. Esta informação é inicializado no construtor Throwable
2 ThrowablegetCause pública ()

Retorna a causa da exceção, o objeto do tipo Throwable
3 public String toString ()

Retorna o nome da classe
4 printStackTrace public void ()

A saída do rastreamento de pilha de exceção para System.err
5 pública StackTraceElement [] getStackTrace ()

Sob a forma de um elemento de rastreamento de pilha da matriz retorna um rastreamento da pilha excepção
6 ThrowablefillInStackTrace pública ()

O rastreamento de pilha atual preencher objeto Throwable

JSP fornece a opção de especificar páginas de erro para cada página JSP. Sempre que a página gera uma exceção, JSP recipiente irá ligar automaticamente para a página de erro.

A seguir exemplos main.jsp especifica uma página de erro. Use <% @ page errorPage = "XXXXX"%> directiva especifica uma página de erro.

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

Agora, escreva ShowError.jsp seguintes documentos:

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

Observando, usos de arquivo ShowError.jsp <% @ page isErrorPage = "true"%> directiva, que conta precisa gerar uma variável de instância exceção o compilador JSP.

Agora tente acessar a página main.jsp, que irá produzir os seguintes resultados:

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

Opps...
Sorry, an error occurred.

Here is the exception stack trace:

Use tags JSTL na página de erro

Tag JSTL pode ser usado para escrever a página de erro ShowError.jsp. Este código de exemplo e lógico no código exemplo é quase o mesmo, mas neste caso o código tem uma melhor estrutura, e podem fornecer mais informações:

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

Os resultados são como se segue:

jsp-exeception-1


Use bloco try ... catch

Se você quiser colocar um tratamento de exceção de página, e para diferentes exceções são tratadas de forma diferente, então você precisa usar um bloco try ... catch.

Este próximo exemplo mostra como usar o bloco try ... catch, o código será colocado em 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>

Tente visitar main.jsp, que irá produzir os seguintes resultados:

An exception occurred: / by zero