(2 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
{{TOCright}} | {{TOCright}} | ||
− | |||
− | |||
== Caso 1 == | == Caso 1 == | ||
Line 73: | Line 71: | ||
UmaExcepção apanhada! | UmaExcepção apanhada! | ||
FINALMENTE! | FINALMENTE! | ||
+ | |||
+ | |||
+ | [[category:PO Exemplos]] |
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!