Difference between revisions of "Excepções (Java)/Exemplos simples de excepções"

From Wiki**3

< Excepções (Java)
 
 
(5 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
{{TOCright}}
 
== Caso 1 ==
 
== Caso 1 ==
  
Line 36: Line 37:
 
   PILHA!
 
   PILHA!
 
   FINALMENTE!
 
   FINALMENTE!
 +
 +
== Caso 2 ==
 +
 +
=== Excepção ===
 +
 +
  <B>class</B> UmaExcep&ccedil;&atilde;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&ccedil;&atilde;o {
 +
      <B>throw</B> <B>new</B> <FONT COLOR="#000080">UmaExcep&ccedil;&atilde;o</FONT>();
 +
    }
 +
    <B>public</B> <FONT COLOR="#800000">static</FONT> <FONT COLOR="#800000">void</FONT> <FONT COLOR="#000080">g</FONT>() <B>throws</B> UmaExcep&ccedil;&atilde;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&ccedil;&atilde;o e) {
 +
        <B><FONT COLOR="#0095ff">System</FONT></B>.<FONT COLOR="#000080">out</FONT>.<FONT COLOR="#000080">println</FONT>(<FONT COLOR="#dd0000">&quot;UmaExcep&ccedil;&atilde;o apanhada!&quot;</FONT>);
 +
      }
 +
      <B>finally </B>{
 +
        <B><FONT COLOR="#0095ff">System</FONT></B>.<FONT COLOR="#000080">out</FONT>.<FONT COLOR="#000080">println</FONT>(<FONT COLOR="#dd0000">&quot;FINALMENTE!&quot;</FONT>);
 +
      }
 +
    }
 +
  }
 +
 +
===Resultado===
 +
 +
  <FONT COLOR="#800000"><B>$ java Teste2</B></FONT>
 +
  UmaExcep&ccedil;&atilde;o apanhada!
 +
  FINALMENTE!
 +
 +
 +
[[category:PO Exemplos]]

Latest revision as of 20:31, 23 October 2013

Caso 1

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.

Excepção

 class UmaExcepção extends Exception {}

Programa

 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!");  }
   }
 }

Resultado

 $ java Teste1
 PILHA!
 FINALMENTE!

Caso 2

Excepção

 class UmaExcepção extends Exception {}

Programa

 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!");
     }
   }
 }

Resultado

 $ java Teste2
 UmaExcepção apanhada!
 FINALMENTE!