Tratamento de Exceções - Help!

3 respostas
L

Gente, me ajudem com o tratamento de exceções, pq ta realmente complicado pra min … Se vcs souberem de algum bom tutorial ou coisa do tipo, me passem o link fazendo favor pq o tutorial daki do fórum não me ajudou mto.
To colando aki trechos de umas classes de um projeto meu e coloquei como comentário as minhas dúvidas.
Vlw!!

Aki só tenho 1 dúvida.Pra q q essa classe foi criada ???

public class ExcecaoEmpregado extends Exception
{ int codigo;
 private final static long serialVersionUID = 1L;
 public ExcecaoEmpregado (String msg)
 { super(msg);
 }

 public ExcecaoEmpregado (int codigo, String msg)
 { super(msg);
  this.codigo = codigo;
 }
 
 public ExcecaoEmpregado ()
 { }

 public int getCodigoDeErro()
 { return codigo;
 }
}

Classe principal

switch (opcao)
   { case 1:
     nome = Console.readLine('\n' + "Digite o nome do empregado: ");
     cpf = Console.readLine("Digite o CPF do empregado: ");
     salario = Console.readDouble ("Digite o salario do empregado: ");
     try
     { int numEmpregado = RepositorioEmpregados.inclui(conn, nome, cpf, salario); // Aqui é onde pode será lançada uma ExecaoEmpregado . //Certo?O erro será lançado se os campos únicos forem duplicados ou //será algum erro no código SQL referente ao método inclui ?
   
      System.out.println('\n' + "Empregado número " + numEmpregado + " incluído com sucesso!");      
     }
     catch (ExcecaoEmpregado e)  //Aqui é onde ele será capturado e //tratado, certo ? 
     {  
      if (e.getCodigoDeErro() == 1 )
      {
       System.out.println(e.getMessage());  //Como q esse e.getMessage //vai ser chamado? O método getMessage() é da classe  
//ExcecaoEmpregado , afinal até o momento o método getMessage() ainda // não recebeu nenhum parâmetro.Qnd é q ele vai ser inicializado ?
      }
      else if (e.getCodigoDeErro() == 2 )
      {
       System.out.println(e.getMessage()); 
      }
      else
      {
       e.printStackTrace();
       System.exit(1) ;
      }

      }     break;
public class RepositorioEmpregados
//Aqui eu tenho mtas dúvidas.
{		
	public static int inclui (Connection conn, String nome, String cpf, double salario) 
		throws ExcecaoEmpregado // Onde q esse método pode lançar e
// ExcecaoEmpregado ??
	{		
		int pk = 0;

		try
		{	Statement stmt = conn.createStatement();
			String query = "SELECT EMPREGADOS_SEQ.NEXTVAL AS NUMERO FROM SYS.DUAL";
			ResultSet rs = stmt.executeQuery(query);
			rs.next();
			pk = rs.getInt("NUMERO");
			stmt.close();

			PreparedStatement pstmt = conn.prepareStatement 
				("INSERT INTO EMPREGADOS (NUMERO, NOME, CPF, SALARIO) " +
	   	 		"VALUES (?, ?, ?, ?)");
			pstmt.setInt (1, pk);
			pstmt.setString	(2, nome);	
			pstmt.setString (3, cpf);
			pstmt.setDouble	(4, salario);	
			pstmt.executeUpdate();
			pstmt.close();
		}
catch(SQLException e) //Aqui será tratado algum erro q for gerado pelo //código SQL acima , certo ??
		{		
		if(e.getSQLState().equals(Constantes.VIOLACAO_INDICE_UNICO) ) /			
{
	if( e.getMessage().toUpperCase().indexOf("EMPREGADOS_NOME_UN")!= -1 ) 
	{
	throw new ExcecaoEmpregado(1 ,"Nome duplicado!"); // O que q //acontece aki ??
	}
				
	else if ( e.getMessage().indexOf("EMPREGADOS_CPF_UN")!= -1 )
		{
		throw new ExcecaoEmpregado(2 ,"Cpf duplicado!");
		}
	else  
	{
		e.printStackTrace();
		System.exit(1);
	}
		}			
		
			else 
			{
					e.printStackTrace();
					System.exit(1);	
			}
		
		
		}

		return pk;
}

3 Respostas

D

bom dia fera…

tutorial da sun sobre exception…‘melhor impossível!’

http://java.sun.com/docs/books/tutorial/essential/exceptions/definition.html

t+
se as dúvidas continuarem…posta aí!

S

A criação de uma classe que extenda a classe de todas as exceções java, Exception, proporciona uma visão mas ampla do problema. Por isso essa classe foi criada. Fazendo assim o programador pode exibir uma mensagem de erro personalizada. Para todos os efeitos, ler a documentação da sun ajuda-lo-á compreender muitas coisas…

V

www.guj.com.br seção tutoriais. :grin:

Criado 7 de maio de 2007
Ultima resposta 9 de mai. de 2007
Respostas 3
Participantes 4