Line 1: | Line 1: | ||
{{TOCright}} | {{TOCright}} | ||
+ | Os exemplos apresentados aqui são complementados pelos apresentados para a [[PO 2005/06: Exemplos da Aula 16|Aula 16]]. | ||
+ | |||
== Caso 1 == | == Caso 1 == | ||
Os exemplos apresentados aqui são complementados pelos apresentados para a Aula 16.
Um erro detectado em tempo de execução. Embora não seja habitual tratar os erros como se fossem excepções, é possÃvel fazê-lo.
class UmaExcepção extends Exception {}
public class Teste1 { public static void f() throws UmaExcepção { throw new UmaExcepção(); } public static void g() throws UmaExcepção { g(); // vai rebentar com a pilha e gerar um StackOverflowError</FONT></FONT> } public static void main(String[] args) { // unreported exception UmaExcepção; must be caught or declared to be thrown // g(); try { g(); } catch(StackOverflowError e) { // não devia ser apanhado! mas pode ser... System.out.println("PILHA!"); } catch (UmaExcepção e) { /* este bloco nunca é executado! */ } finally { System.out.println("FINALMENTE!"); } } }
$ java Teste1 PILHA! FINALMENTE!
class UmaExcepção extends Exception {}
public class Teste2 { public static void f() throws UmaExcepção { throw new UmaExcepção(); } public static void g() throws UmaExcepção { f(); } public static void main(String[] args) { try { g(); } catch (UmaExcepção e) { System.out.println("UmaExcepção apanhada!"); } finally { System.out.println("FINALMENTE!"); } } }
$ java Teste2 UmaExcepção apanhada! FINALMENTE!