|
|
Line 1: |
Line 1: |
| {{NAVPO}}
| | #REDIRECT [[ist:Excepções (Java)]] |
| {{TOCright}}
| |
| | |
| = Introdução às Excepções =
| |
| | |
| * Introdução às excepções
| |
| * Uso do mecanismo de excepções no controlo da execução de programas
| |
| * Mecanismo de excepções em Java
| |
| * Excepções e erros
| |
| * Classes de suporte às excepções: '''Throwable''', '''Exception''', '''Error'''
| |
| * Tipos de excepções: ''checked exceptions'' (verificadas em tempo de compilação) e excepções durante a execução ('''RuntimeException''').
| |
| | |
| = Mecanismo das Excepções em Java =
| |
| | |
| Estes exemplos muito simples ilustram casos artificiais e servem para demonstrar o mecanismo das excepções. Não devem ser tomados como modelo de programação.
| |
| | |
| == Classe "UmaExcepção" ==
| |
| Considere-se a seguinte classe que define uma excepção:
| |
| | |
| <java5>
| |
| class UmaExcepção extends Exception {}
| |
| </java5>
| |
| | |
| == Programa 1 ==
| |
| Este programa ilustra o processamento básico de excepções.
| |
| | |
| Neste exemplo, pode ainda ver-se como um erro pode ser tratado em tempo de execução. Embora não seja habitual tratar os erros como se fossem excepções, é possível fazê-lo.
| |
| | |
| <java5>
| |
| 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
| |
| }
| |
| 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!"); }
| |
| }
| |
| }
| |
| </java5>
| |
| | |
| ===Resultado===
| |
| | |
| <FONT COLOR="#800000"><B>$ java Teste1</B></FONT>
| |
| PILHA!
| |
| FINALMENTE!
| |
| | |
| == Programa 2 ==
| |
| | |
| <java5>
| |
| 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!");
| |
| }
| |
| }
| |
| }
| |
| </java5>
| |
| | |
| ===Resultado===
| |
| | |
| <FONT COLOR="#800000"><B>$ java Teste2</B></FONT>
| |
| UmaExcepção apanhada!
| |
| FINALMENTE!
| |
| | |
| == Programa 3 ==
| |
| | |
| <java5>
| |
| public class OutraExcepção extends Exception {
| |
| public OutraExcepção() {}
| |
| public OutraExcepção(Throwable cause){ super(cause); }
| |
| }
| |
| </java5>
| |
| | |
| <java5>
| |
| public class Teste3 {
| |
| void f() throws UmaExcepção { throw new UmaExcepção(); }
| |
| void g() throws UmaExcepção { f(); }
| |
| void h() throws OutraExcepção { throw new OutraExcepção(); }
| |
| | |
| public static void main(String args[]) throws OutraExcepção {
| |
| Z z = new Z();
| |
| try { z.g(); z.h(); }
| |
| catch (UmaExcepção u) { System.out.println("u"); throw new OutraExcepção(u); }
| |
| //catch (UmaExcepção u) { System.out.println("u"); throw new RuntimeException("batata", u); }
| |
| catch (Throwable t) { System.out.println("t"); }
| |
| finally { System.out.println("done! one way or another..."); }
| |
| }
| |
| | |
| }
| |
| </java5>
| |
| | |
| =Exemplos=
| |
| * [[Entradas e Saídas em Java]]
| |
| | |
| =Exercícios=
| |
| | |
| * [[Excepções (Java)/Exercício 01: Stack|Stack]]
| |
| * [[Excepções (Java)/Exercício 02: Arabian Nights|Arabian Nights]]
| |
| | |
| [[category:Ensino]]
| |
| [[category:PO]]
| |
| [[category:Java]]
| |