Try e catch

2 respostas
S

Opa, galera, tudo bem?

Eu fiz um programa teste que estou aprendendo agora sobre exceção e achei o código bem repetitivo, estou achando q tá errado, alguem poderia me dizer como está o código, se fiz de forma correta ou não? Obrigado

package exercicio;

public class Conta {
	/* 
	Você foi contratado para fazer um pequeno sistema 
	de automação bancária.  Como novo membro da 
	equipe, lhe foram passadas as seguintes tarefas:

	Desenvolver uma classe Conta, que possua os seguintes atributos: número, nome e saldo.
	Deverá ser usado encapsulamento e a classe deve possuir um construtor, lançando exceções 
	do tipo IllegalArgumentException se os parâmetros não forem passados corretamente.*/
	
	private int numero;
	private String nome;
	private double saldo;
	
	public Conta(int numero,String nome,double saldo)
	{
		
	try{
		if(numero>0)
		{
		this.numero=numero;
			}
		
		else{
			throw new IllegalArgumentException();
				}
	}
	catch(IllegalArgumentException e)
		{
			System.out.println("Exceção "+ e);
			}
		
	
	try{
	
		if(nome!=null)
		{
		this.nome=nome;
			}
		
		else{
			throw new IllegalArgumentException();
		
				}
	}
	
	catch(IllegalArgumentException e)
	{
		System.out.println("Exceção "+ e);
		}
		
	
	try{
	
		if(saldo>0)
			{
		this.saldo=saldo;
		
				}
		
		else{
			throw new IllegalArgumentException();

		}
	}	
		catch(IllegalArgumentException e)
		{
			System.out.println("Exceção "+ e);
			}
	
	}
		public void setNumero(int n)
		{
			try{
			
			if(numero>0)
			{
				numero=n;
				}
			
			else{
				throw new IllegalArgumentException();
					}
			}
			
			catch(IllegalArgumentException e)
			{
				System.out.println("Exceção "+ e);
				}
			}
		
		public int getNumero()
		{
			
			return numero;
	
			}
		
		public void setNome(String name)
		{
			try{
				
			
			if(nome!=null)
			{
				nome=name;
				}
			
			else{
				throw new IllegalArgumentException();
			
			}
			
				}
			catch(IllegalArgumentException e)
			{
				System.out.println("Exceção "+ e);
				}
		
		}
		public String getNome()
		{
			return nome;
			
			}
		
		public void setSaldo(double sald)
		{
			try{
				
			
			if(saldo>0)
			{
				saldo=sald;
	
				}
	
			else{
				throw new IllegalArgumentException();

			}
				}
			catch(IllegalArgumentException e)
			{
				System.out.println("Exceção "+ e);
				}
		}
		public double getSaldo()
		{

			return saldo;
			
			}
}

2 Respostas

A

Alguns pontos:

1 - As validações se os parametros estão corretos devem ser feitas nos métodos “set”.

2 - Você não precisa criar um bloco try-catch para cada exceção que dispara, pelo contrário, você propaga ela para a classe que chamou.

Qualquer dúvida posta aí (:

L

Acho que o que vc deveria fazer é algo desse tipo.

class Conta { public Conta(int numero, String nome, double saldo) { super(); if(numero < 0) { throw new IllegalArgumentException("Numero da conta deve ser maior que zero"); } if((nome == null) || (nome.length() == 0)) { throw new IllegalArgumentException("O nome do titulaar nao pode ser nulo ou vazio"); } if(saldo < 0) { throw new IllegalArgumentException("Saldo deve ser maior que zero"); } this.numero = numero; this.nome = nome; this.saldo = saldo; } }

Edit: Complementando a resposta quem deve tratar a exceção dos parâmetros incorretos será quem usa a classe e não ela mesmo. Do jeito que vc fez o máximo que ocorreria seria de a exceção ser exibida no console.

public static void main(String [] args) { new Cliente(1, "Teste", 1000.0); // OK new Cliente(1, "", 0); /Erro no nome }

O codigo acima quando executado na sua classe não teria exceção nenhuma, só seria exibido o erro no console.

Criado 28 de outubro de 2010
Ultima resposta 28 de out. de 2010
Respostas 2
Participantes 3