Bom dia,
Gostaria de saber como eu faço a captura de erros de SQL através do arquivo web.xml???
Eu gostaria de redirecionar para uma outra página informando sobre o erro.
Bom dia,
Gostaria de saber como eu faço a captura de erros de SQL através do arquivo web.xml???
Eu gostaria de redirecionar para uma outra página informando sobre o erro.
No elemente , você pode especificar um .
<error-page>
<exception-type>java.sql.SQLException</exception-type>
<location>/errosSql.jsp</location>
</error-page>
Uma referência:
http://edocs.bea.com/wls/docs61/webapp/web_xml.html#1017571
Mas ai que tá o meu erro…eu escrevo isso no web.xml, indico a página erroSQL.jsp como uma página de erro, assim “<%@ page isErrorPage=“true” %>” e reinicio o Tomcat e mesmo assim ele me mostra aquela tela padrão de erro 500, e parece até brincadeira, avisando que o erro de root é java.sql.SQLException
Não há nenhum problema com sua página erroSql.jsp?
Tenta criar uma página em branco, sem diretivas, para testar. Eu fiz um teste aqui lançando um NPE e funcionou sem problemas.
Tirei o ‘isErrorPage’ e nada cara…eu também testei tentando capturar o erro pelo código:
500 /erro500.jsp e deu certo....será que o erro tá hora de mandar o erro, será que tem como me passar o código do teste de envio de erro???obrigado
Guilherme
Eu percebi que na página de erro que o Tomcat oferece, são apresentadas três Exception’s:
org.apache.jasper.JasperException, javax.servlet.ServletException e java.sql.SQLException
ele captura javax.servlet.ServletException…mas a java.sql.SQLException que realmente joga o erro ele não captura
Que página é essa?
Por que você não cria a sua própria página de erro?
É uma página de erro que mostra o stackTrace…quase igual ao log do Tomcat, só que mais bonitinho 
mas outra coisa…o caso é que ele tá buscando a exception errada…ele tem que pegar a “java.sql.SQLException”
eu realmente preciso criar minha página de errro, mas cada erro vai ter uma página específica…vc tem idéia pq ele não captura o SQLException???
Se você puder fazer o teste com uma SQLException, eu agradeço…até mais
Bem, os métodos doGet e doPost só lançam somente ServletException e IOException, para SQLException creio que você teria de salvar o objeto exception em algum escopo para depois recuperá-lo.
E sugiro que crie sua própria página de exceções
Você já tentou criar uma página de erro genérica?
Exemplo:
Crie uma página jsp (errorpage.jsp) que conterá as mensagens de erro:
<%@ page isErrorPage="true"%>
<%
java.io.ByteArrayOutputStream baos = new java.io.ByteArrayOutputStream();
java.io.PrintStream errOut = new java.io.PrintStream(baos);
exception.printStackTrace(errOut);
%>
<body bgcolor="#FFFFFF">
<table border="1">
<tr>
<td>Erro</td>
<td><%= exception%></td>
</tr>
<tr>
<td>Stack</td>
<td><%= baos.toString()%></td>
</tr>
</table>
</body>
</html>
Agora utilize essa página em outras páginas jsp:
<%@ page import="java.text.NumberFormat, java.util.ArrayList"%>
<%@ page errorPage="errorpage.jsp"%>
<html>
<head>
<title>Título</title>
</head>
bla bla bla bla bla.........
</body>
Acho que qualquer mensagem de erro será exibida.
Então para eu criar uma página de erro própria eu faria o pegar o erro de Exception (pegar o código de erro 500)???
A instrução que eu faço acontecer a Exception é a: DriverManager.getConnection(URL, USUARIO, SENHA);
Na verdade eu tenho uma classe que cria a conexão com o Banco de Dados…nessa classe tem um método que joga uma SQLException caso alguma instrução tenha erro(com o try/catch), por isso eu acho estranho que o Tomcat não reconheça a primeira exception como SQLException
<%@page isErrorPage="true" %>
<html>
<head>
<title>Página de Erro</title>
</head>
<body bgcolor="#000000" text="#FFFFFF">
<h1>Página não encontrada!</h1>
<pre><%=exception.printStackTrace()%></pre>
</body>
</html>
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/erro/erro404.jsp</location>
</error-page>
hmmm
pq vc nao tenta assim?
<%@page isErrorPage="true"%>
<h1>UM ERRO ACONTECEU</h1>
1) Esta PAGINA DE ERRO FOI CHAMADA PELO CONTAINER POIS UMA<br>
<b><%=exception.getClass().getName()%> </b>
foi gerada.
<br>
2) A mensagem de erro gerada foi: <br>
<b><%=exception.getMessage()%></b>
<br>