Curso de Verão de Java



Exceções - Elementos Sintáticos e Semânticos

keywords: throws, throw, try, catch, finally.

O Programador pode definir novos tipos de exceções, criando subclasses da classe Exception

 	
	class MinhaExcecao extends Exception {
	}
O programador pode "levantar" exceções de qualquer natureza.

	class MinhaClasse {
		void oops() throws MinhaExcecao {
			if (/* não ocorreu erro */) {
				...
			} else { /*  ocorreu erro */
				throw new MinhaExcecao();
			}
		}
	}
	
O programador pode definir seus próprios "exception handlers", os quais capturam um determinado tipo de exceção, podendo retomar à execução normal do programa.

	Class MeuTestadordeExcecao {	
		public static void main(String args[]) {	
			MinhaClasse teste = new MinhaClasse();	
			try {	
				test.oops();	
			} catch (NullPointerException e) {
				System.out.println("teste era igual a null"); 	
			} catch (MinhaExcecao e) {	
				System.out.println("Esta é MinhaExcecao !"); 
			} catch (Exception e) { 	
System.out.println("Outro erro ocorreu"); } catch (Object obj) { System.out.println("Um outro objeto foi levantado - REVER ISTO !"); } } }
O programador pode "re-levantar" a exceção, o que passa a exceção para o nível acima no aninhamento de chamadas de procedimento

	try {	
		f.open(); 	
	} catch (Exception e) {		
		f.close();	
		throw e;	
	}	
	
O comando finally é util quando se deseja garantir que um determinado trecho de código será sempre executado, ocorra ou não uma exceção. O trecho de código que se segue

	try {	
		// faz algo	
	} finally {	
		// limpa tudo ao sair	
	}	
	

é similar ao código abaixo

	try {	
		// faz algo	
	} catch (Object obj) {	
		//limpa tudo ao sair	
		throw obj;
	}	
	// limpa tudo ao sair 	
	

outro trecho de código com uso de finally

	try { 	
		if (a == 10) {
			return;
		}
	} finally {
		System.out.println("Entrei no finally");
	}
	System.out.println("a variável \"a\" nao é igual a 10.");
        


Breno Gustavo Soares da Costa, bgsc@di.ufpe.br
Última edição em 22 de janeiro de 1996.
URL: http://www.di.ufpe.br/~java/verao/aula8/elementos.html