Monitorando erros com try catch

3 respostas
Adalberto_Pereira

Caros, boa tarde. Estou tendo uma dificuldade em java, sou iniciante. Preciso realizar isso.

Lançar uma excepção chamada IllegalArgumentException, que já faz parte da biblioteca do Java, sempre que o valor passado como argumento for inválido (por exemplo, quando for negativo).

Abaixo segue o código que estou utilizando.

package testelista;

public class Conta {
	int numero;
	double saldo;
	double limite;
	
	public void sacar(double quantidade) {
		this.saldo = this.saldo - quantidade;
	}
	
	public void depositar(double valor) {
		try {
			if (valor < 0) 
		} catch (IllegalArgumentException ) { //aqui da o erro illegal start of statement
			System.out.println("O valor depositado é invaliado");
		}
		
		this.saldo += valor;
	}
}

O que ta errado? Podem me explicar por favor e mostrar qual a forma correta?

3 Respostas

J

Colega de uma pesquisa nesse link

https://www.caelum.com.br/apostila-java-orientacao-objetos/excecoes-e-controle-de-erros/#11-7-lancando-excecoes

Na apostila da caelum procure o lançamento da exceção e você encontrará a resposta

C

Olá Adalberto!

Acho que especificamente para o seu exemplo, não vem ao caso o bloco try/catch.

Este código poderia ficar assim:

package testelista;

public class Conta {

int numero;
double saldo;

public void sacar(double valor) throws IllegalArgumentException {
	if (valor <= 0) {
		throw new IllegalArgumentException("Valor inválido para saque!");
	}

	if (valor > saldo) {
		throw new IllegalArgumentException("Saldo insuficiente!");
	}
	saldo -= valor;
}

public void depositar(double valor) throws IllegalArgumentException {
	if (valor <= 0) {
		throw new IllegalArgumentException("Valor inválido para depósito!");
	}
	saldo += valor;

}

}

Para testar a aplicação, você pode criar um método main() e começar a fazer testes, como o exemplo abaixo:

public static void main(String[] args) {

Conta c1 = new Conta();
	c1.depositar(500);
	System.out.println("Saldo: " + c1.saldo);

	c1.sacar(0);
	System.out.println("Saldo: " + c1.saldo);

}

Na verdade o bloco try/catch deve ser escrito dentro do método main() e envolve as chamadas para métodos passíveis de erro.

Abraços!

Adalberto_Pereira

Carlos, muito obrigado.

Desculpe a demora… correria com faculdade. Ta mó tenso,

Criado 15 de outubro de 2017
Ultima resposta 5 de nov. de 2017
Respostas 3
Participantes 3