Exception em java para iniciante

1 resposta
M

Bom dia pessoal, este é meu primeiro post aqui no forum de java.

Este semestre comecei a estudar java pela faculdade e tenho gostado mas ai vem um problema o professor passou excessão para estudar e colocar em alguns problemas de uma lista de exercicio.

Vi por alguns livros e sites que posso usar o bloco try catch ou usar o throws com o throw criando minha propria excessão.

Mas tive uma duvida quero tratar no exercicio dentro da classe de execessão o problema.

Vou postar o codigo…

Codigo main

package exerc_9;

import java.util.Scanner;

public class Banco {

	public static void main(String[] args) throws BancoException {

		int op;
		Scanner s = new Scanner(System.in);
		BancoMethods banco = new BancoMethods();

		do {
			System.out.println("Informe o operação que deseja realizar");
			System.out.println("1 - Saque da conta");
			System.out.println("2 - Pagamento");
			System.out.println("3 - Deposito");
			System.out.println("4 - Saldo");
			System.out.println("5 - Sair");
			System.out.print("Informe o opção: ");
			op = s.nextInt();
			banco.setOpcao(op);
		} while (op != 5);
	}

}

codigo aonde faço as operações

package exerc_9;

import java.util.Scanner;

public class BancoMethods {

	private float saldo;
	private float saque;
	private float pagamento;
	private int opcao;

	Scanner s = new Scanner(System.in);

	public void setOpcao(int opcao) throws BancoException {
		this.opcao = opcao;
		operacao(this.opcao);
	}

	private void operacao(int op) throws BancoException {
		switch (op) {
		case 1:
			setSaque(this.saque);
			break;
		case 2:
			setPagamento(this.pagamento);
			break;
		case 3:
			setSaldo(this.saldo);
			break;
		case 4:
			System.out.println("Saldo bancário: " + getSaldo());
			break;
		case 5:
			System.out.println("Programa finalizado");
			break;
		default:
			System.out.println("Opção Invalida");
		}
	}

	private void setSaldo(float saldo) {
		System.out.print("Informe o valor a ser depositado: ");
		saldo = s.nextFloat();
		this.saldo = saldo;
	}

	private void setSaque(float saque) throws BancoException {
		System.out.print("Informe o valor a ser sacado: ");
		saque = s.nextFloat();
		this.saque = saque;
		if (this.saque > this.saldo) {
			throw new BancoException(this.saque);
		} else {
			this.saldo -= this.saque;
		}
		System.out.println("Saldo: " + getSaldo());
	}

	private void setPagamento(float pagamento) throws BancoException {
		System.out.print("Informe o valor a ser pago: ");
		pagamento = s.nextFloat();
		this.pagamento = (float) (pagamento + (pagamento * 0.1));
		if (this.pagamento > this.saldo) {
			throw new BancoException(this.saque);
		} else {
			this.saldo -= this.pagamento;
		}
		System.out.println("Saldo: " + getSaldo());
	}

	private float getSaldo() {
		return this.saldo;
	}
}

codigo da excessão

package exerc_9;

public class BancoException  extends Exception{
	
	BancoException(float valor){
		super("Valor inválido: "+valor);
	}

}

Gostaria de uma critica sobre o meu trabalho para eu também melhorar…por exemplo nos metodos getters and setters há algum problema eu chamar ele de get e set sendo que eu os defini como private e nos metodos set não passar valor de parametro?

E a duvida sobre excessão seria passar como parametro valores aonde dentro da classe de excessão seria tratados…

Obrigado

1 Resposta

rafaduka

Conventions
================

Gostaria de uma critica sobre o meu trabalho para eu também melhorar...
por exemplo nos metodos getters and setters há algum problema eu chamar
ele de get e set sendo que eu os defini como private e nos metodos set não passar valor de parametro?

Não há problema em fazer desta maneira,
utilizando essa assinatura para os métodos,
sendo o modificador de acesso, public, protected e private

Methods should be verbs, in mixed case with the first letter lowercase, with the first letter of each internal word capitalized. run(); runFast(); getBackground(); code conventions

Exception
================

A classe Exception, vc pode enriquecer mais.

package exceptions;
public class AlgoException extends Exception   
{  
  
    public AlgoException()  
    {  
    }  
      
    public AlgoException(Throwable e)   
    {  
        super(e);  
    }  
      
    public AlgoException(String msg)   
    {  
        super(msg);  
    }  
      
    public AlgoException(String msg, Throwable e)   
    {  
        super(msg, e);  
    }  
}

O seu método "main" irá lançar a excessão para quem?
Deixe seu "main" com try e catch, assim, todos seus métodos
que lançarem a exception, o main pode-o capturar.

Criado 22 de abril de 2012
Ultima resposta 22 de abr. de 2012
Respostas 1
Participantes 2