Lançar exceções obrigatórias a serem tratadas

2 respostas
carlinbh

Iniciando uma aula que abordava o assunto de exceções perguntei ao meu professor como criar métodos que ao lançar exceções obrigam o tratamento delas.
Esse exemplo abaixo só lança a exceção, não obriga quem for usa-lo a tratar.

public static void mostrarIdade(int idade) {
	if(idade>-1)
		System.out.println("Idade é "+idade);
	else
		throw new IllegalStateException();
}

Então o professor de Java disse que apenas adicionando esta linha ao método: throws IllegalStateException já obrigaria quem for usa-lo a tratar as Exceções.

public static void mostrarIdade(int idade) throws IllegalStateException {
	if(idade>-1)
		System.out.println("Idade é "+idade);
	else
		throw new IllegalStateException();
}

Mas ao testar não fez diferença alguma, consegui usar o método sem tratar sua exceção, essa seria realmente a forma correta de lançar exceções obrigatórias?

2 Respostas

kadu.m.lino

Nao, pois essa eh um tipo de excecao NAO verificada(unchecked)…

Ha dois tipos de excecoes no java… as verificadas(checked)… que vc de qualquer forma tem que trata-las, usando try…

e as nao verificadas… que vc pode lancar e n precisa ser obrigatoriamente tratadas

se a IllegalStateException fosse uma checked o sua IDE provavelmente forcaria vc a ou add um bloco try…catch ou delegar o tratamento pra quem chama o metodo…

carlinbh

Agora entendi camarada, depende da exceção. Na documentação deve especificar quais são Checked e quais são Unchecked.
Obrigado pela ajuda. =)

Criado 2 de abril de 2013
Ultima resposta 2 de abr. de 2013
Respostas 2
Participantes 2