lunedì 15 luglio 2013

Rilanciamento eccezioni con "type-checking" inclusivo

Questa feature introdotta con la Java 7 e ben spiegata nel sito oracle (http://docs.oracle.com/javase/7/docs/technotes/guides/language/catch-multiple.html#rethrow) consente di rilanciare eccezioni specifiche senza dover utilizzare la generica Exception.
Il compilatore infatti a Runtime è in grado di capire di quale eccezione si tratta.
Vediamo un esempio:


public class Exceptions {
   static class Eccezione1 extends Exception { }
   static class Eccezione2 extends Exception { }
   public static  void rethrowException(String exceptionName) throws Eccezione1,Eccezione2 {
     try {
      switch(exceptionName){
      case "uno":
       throw new Eccezione1();
      case "due":
      throw new Eccezione2();
      default:
       System.out.println("Nessuna eccezione");
      
      }
      
     } catch (Exception e) {
       throw e;
     }
   }
}


Nelle versioni precedenti di Java saremmo stati costretti a mettere nel throws Exception, adesso invece possiamo rilanciare le nostre eccezioni specifiche.


Nessun commento:

Posta un commento