Buscar

Aula 26 01/11/2017 Tramento de exceções

Prévia do material em texto

Tramento de exceções
Na POO, o tratamento de erros em programas é feito de uma forma específica
A ideia é que o programador construa a aplicação admitindo que nada de errado acontecerá (caminho feliz)
Caso aconteça algo imprevisto o próprio ambiente sinalizará que houve um comportamento de EXCEÇÃO, que deverá ser tratado
A linguagem JAVA, especificamente diferencia os conceitos de ERRO e EXCEÇÂO
Erro: Situação extrema e irrecuperável, causada geralmente por falhas no ambiente de execução
Já que a situação é irrecuperável, não há medidas a serem tomadas (a aplicação deve terminar com falha)
Exemplo: OutOFMemoryError
Exceção: Comportamento anormal, porém previsto
Já que é previsto, deve ser tratado
Exemplo: InputMismatchException, NumberFormatException, NullPointerException, ETC
Java define a seguinte hierarquia de classes:
 Throwable
Error
Exception
Todas as subclasses de Error são erros e devem possuir o sufixo “ERROR” em seu nome
Todas as subclasses de Exception são exceções e devem possuir o sufixo “EXCEPTION” em seu nome
O programador está autorizado a criar suas próprias classes de exceção conforme a necessidade
A filosofia de JAva (e da maioria das linguagens OO) é que o programador deve demarcar no programa os trechos que, podem levar a exceções e tratá-las caso ocorram
A ideia é criar blocos “seguros”, dentro da estrutura try
Caso seja lançada uma exceção durante a execução do bloco try, ela deve ser capturada em um bloco catch e devidamente tratrada
Se houver a necessidade de se executar comandos ainda que ocorram exceções, estes podem ser inseridos no bloco opcional finally
Exemplio
	try{
Scanner s = new Scanner(System.in);
x = s.nextInt( );
} catch( InputMismatchException e){
	System.err.println(“Entrada inválida!”);
}finaly{
s.close( );
}
Mais de uma exceção pode ser tratada em um bloco try
Forma 1:
		try{
		x = Interger.parseInt(s);
		} catch (NumberFormatException e1){
System.err.println(“A string não era um número!”)
} catch(numPoniterException e2){
System .err.println(“A string era nula!”);
}
Forma 2:
		try{
	x =Interger.parseInt(s);
}catch(NumberFormatException | NullPointerException e){
System.err.println (“A string era inválida!”);
}
O comando throw lança explicitamente, uma exceção
É bastante útil para lançar exceções identificadas pela lógica da aplicação
Exemplo
	try{
System.out.println(“Informe a opção (A ou B)”);
op = scanner.nextLine( 0;
if(!op.equals(“A”) && !op.equals(“B”)){
throw new ImputMismatchException( );

Continue navegando