m |
|||
(4 intermediate revisions by the same user not shown) | |||
Line 37: | Line 37: | ||
PILHA! | PILHA! | ||
FINALMENTE! | FINALMENTE! | ||
+ | |||
+ | == Caso 2 == | ||
+ | |||
+ | === Excepção === | ||
+ | |||
+ | <B>class</B> UmaExcepção <B>extends</B> <B><FONT COLOR="#0095ff">Exception</FONT></B> {} | ||
+ | |||
+ | === Programa === | ||
+ | |||
+ | <B>public</B> <B>class</B> Teste2 { | ||
+ | <B>public</B> <FONT COLOR="#800000">static</FONT> <FONT COLOR="#800000">void</FONT> <FONT COLOR="#000080">f</FONT>() <B>throws</B> UmaExcepção { | ||
+ | <B>throw</B> <B>new</B> <FONT COLOR="#000080">UmaExcepção</FONT>(); | ||
+ | } | ||
+ | <B>public</B> <FONT COLOR="#800000">static</FONT> <FONT COLOR="#800000">void</FONT> <FONT COLOR="#000080">g</FONT>() <B>throws</B> UmaExcepção { | ||
+ | <FONT COLOR="#000080">f</FONT>(); | ||
+ | } | ||
+ | <B>public</B> <FONT COLOR="#800000">static</FONT> <FONT COLOR="#800000">void</FONT> <FONT COLOR="#000080">main</FONT>(<B><FONT COLOR="#0095ff">String</FONT></B>[] args) { | ||
+ | <B>try</B> { | ||
+ | <FONT COLOR="#000080">g</FONT>(); | ||
+ | } | ||
+ | <B>catch</B> (UmaExcepção e) { | ||
+ | <B><FONT COLOR="#0095ff">System</FONT></B>.<FONT COLOR="#000080">out</FONT>.<FONT COLOR="#000080">println</FONT>(<FONT COLOR="#dd0000">"UmaExcepção apanhada!"</FONT>); | ||
+ | } | ||
+ | <B>finally </B>{ | ||
+ | <B><FONT COLOR="#0095ff">System</FONT></B>.<FONT COLOR="#000080">out</FONT>.<FONT COLOR="#000080">println</FONT>(<FONT COLOR="#dd0000">"FINALMENTE!"</FONT>); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ===Resultado=== | ||
+ | |||
+ | <FONT COLOR="#800000"><B>$ java Teste2</B></FONT> | ||
+ | UmaExcepção apanhada! | ||
+ | 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!