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>Oppspt.</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!!! ptptpt Oppspt. 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>Oppspt.</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:
Use bloco try pt. 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 pt. catch.
Este próximo exemplo mostra como usar o bloco try pt. catch, o código será colocado em main.jsp:
<html> <head> <title>Trypt.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