Tratamento de Erros

12 respostas
G

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.

12 Respostas

R

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

G

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

R

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.

G

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

G

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

R

Que página é essa?
Por que você não cria a sua própria página de erro?

G

É uma página de erro que mostra o stackTrace…quase igual ao log do Tomcat, só que mais bonitinho :slight_smile:

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

R

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

J

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.

G

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

I
Estou com um problema parecido. Vejam só um dos tratamentos que fiz:
<%@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>
coloco no web.xml
<error-page>
		<error-code>404</error-code>
		<location>/WEB-INF/erro/erro404.jsp</location>
	</error-page>
Mas não está funcionando... Se tiro o isErrorPage e o printStackTrace, funciona... colocando esse código acima, a página não é encontrada! Tem alguma configuração no Tomcat 5.5 que precisa ser modificada?!?!
B

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>
Criado 6 de abril de 2006
Ultima resposta 22 de mai. de 2007
Respostas 12
Participantes 5