Tratamento de Excessões

6 respostas
WGuedes

Olá pessoal,

Estou começando a tratar excessões em Java, e gostaria de ajuda de você:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class ConexaoSemTratamento {
       private Connection con;
       private boolean commit;
	  
	public ConexaoSemTratamento(){}
    
        public Connection getCon() { return con; }
        public void setCon(Connection con){this.con = con; }
 
	public void openConnection()  {
            con = null;
            String driver = "com.mysql.jdbc.Driver";        	
            String url = "jdbc:mysql://localhost:3306/autor";
            String user="root";
            String pwd="";
          try{
            Class.forName(driver);
            con=DriverManager.getConnection(url, user, pwd);
            }catch(SQLException e){
            System.out.println("Excessão com SQL");
            e.printStackTrace();

        }
	}
	  
	public ResultSet executeQuery(String sql) {
          Statement s = con.createStatement();
          ResultSet rs = s.executeQuery(sql);
          return rs;
	}


	public boolean executeUpdate(String sql) {
           boolean retorno = false;
           Statement s = con.createStatement();
           if(s.executeUpdate(sql)>0) retorno = true;
           return retorno;
        }

	public void executeCommit() {
            con.commit();
	}
	
	public void executeRollback() {
            commit = false;
            con.rollback();
	}
	

}

A openConnection eu já consegui fazer.

Obrigado

6 Respostas

galileu.gt

Mas qual a sua dúvida?

PAra tratar as exceções voce precisa de um try no local onde ela pode ocorrer. …como voce fez no openConnection().
o catch serve para voce tratar a exceção.

em um IDE, como o eclipse por exemplo, voce pode identificar os locais onde exceções podem ser lançadas observando as linhas em que o codigo nao compila. Esses sao os locais onde vc precisa cercar com um try.

o catch vc coloca logo abaixo. NEsse bloco voce coloca as coisas que achar necessario. Geralmente imprime-se uma mensagem e o stack trace da exceção (exc.printStackTrace())

entendeu?
Voce jah fez em open connection…eh soh fazer nos outros locais necessarios.

LPJava

bem, tb nao entendi qual era a duvida.
mas, se quer entender tratamento de excecoes tem este post: http://camilolopes.wordpress.com/2009/02/04/tratamento-de-excecoes-em-java/

dar uma olhada.

flw.

WGuedes

Pessoal, minha dúvida é:

por exemplo, no

public ResultSet executeQuery(String sql) {
          Statement s = con.createStatement();
          ResultSet rs = s.executeQuery(sql);
          return rs;
	}

eu faço:

try{
public ResultSet executeQuery(String sql) {

 }catch(ResultSet e){
            System.out.println("Excessão com SQL");
            e.printStackTrace();

        }
          Statement s = con.createStatement();
          ResultSet rs = s.executeQuery(sql);
          return rs;

Já li mas não entendi a lógica de quando usar.

Obrigado

T
try{
public ResultSet executeQuery(String sql) {

 }catch(ResultSet e){
            System.out.println("Excessão com SQL");
            e.printStackTrace();

        }
          Statement s = con.createStatement();
          ResultSet rs = s.executeQuery(sql);
          return rs;

Cara, que locura é essa!!!!

VC não pode abre um TRY { e colocar uma class dentro dele e E AINDA POR CIMA NÃO FECHA-LA e colocar um CATCH no meio!!!!

Veja a sintaxe
try {
 blablabla.... 
} catch(Exeption e) {
blablabla....
}

deve ser entendida da seguinte forma:

TENTE { ISSO AQUI } CATCH (PEGADOR p) { ISSO AQUI NÃO DEU CERTO! }

a palavra "try" em ingles significa TENTAR a CATCH significa "Pegar" de forma alguma pode ficar uma classe pela metade dentro do TRY e termina-la fora ou dentro do CATCH.

ESPERO TER AJUDADO

abraço

LPJava

nao sei se leu o post que coloquei, la eu explico o porque de cada coisa. tem coisas que nao se aprende com pratica, ou so pegando os codigos e sair digitando, tem que viajar no conceito e dai o code fica rox.

AndreSorge

Boa Tarde Pessoal,

Vou tentar te ajudar WGuedes

O try ser como disse o amigo Tiago Neves para tentar. Mas tentar o que?..tentar executar alguma ação…por exemplo…

try{
   /*Tenta executar alguma ação*/
}

Belaza, ele tenta realizar alguma ação e consegue…sucesso… mas e se não der certo??? Como tratamos? com o catch exemplo:

try{
   /*Tenta executar alguma ação*/
}catch(Exception e){
   /*Trata o erro ocorrido*/
}

Mas e se por algum motivo desconhecido a porcaria para ou acontece alguma coisa inespera??? o bloco catch pode não estar preparado para “pegar” todas as Exceptions então entra um bloco chamado finally exemplo:

try{
   /*Tenta executar alguma ação*/
}catch(Exception e){
  /*Trata o erro ocorrido*/
}finally{
  /*Independente do que aconteça, este bloco sempre será executado*/
}

Só que esse conjunto só pode ser usado dentro de um método. Vamos a um exemplo prático.

int idade;

public void testaTry(){

    try{
          idade = Integer.parseInt(JOptionPane.showInputDialog("Digite um nome"));/*O JoptionPane retorna sempre uma String mas a nossa variável é um inteiro, então se você digitar um número, beleza ele não vai dar erro, mas e se você digitar uma letra? ele vai dar um erro, NumberFormatException, então temos de tratar esse erro, colocamo no catch.*/
    }catch(NumberFormatException e){/*Precisa desse "e", pois você cria uma variável do tipo NumberFormatException*/
          System.out.println ("Erro digitou alguma coisa que é diferente de número");
    }catch(NullPointerException e){/*Caso você não digite nada*/
          System.out.println ("Erro não foi digitado nada");
    }finally{
          /*Neste bloco você sempre colocar alguma coisa que sempre deve ser executada, independente do que aconteça nas parte de cima*/
          System.out.println("Ok");
           /*Sempre vai aparecer "OK" mesmo dando certo ou errado o código*/  
    }

Entendeu?Qualquer coisa posta a sua dúvida…

Caso eu esteja errado, por favor me corrijam…

abraços…

Criado 9 de junho de 2010
Ultima resposta 18 de jun. de 2010
Respostas 6
Participantes 5