Post

Visualizzazione dei post con l'etichetta eccezioni

Java 7: Multicatch

DOMANDA: In un try/catch c'è modo di scrivere più eccezioni nello stesso catch evitando così codice ridondante nel caso di stesso comportamento? RISPOSTA: Fino a Java 6 succede una cosa alquanto scomoda nell'utilizzo del try/catch : quando ci troviamo di fronte ad un codice che ha lo stesso comportamento con diverse eccezioni , siamo costretti a dover ripetere lo stesso codice più volte dentro diversi catch . Guardiamo nel dettaglio un esempio in cui posso avere due eccezioni a runtime : una NumberFormatException qualora inserisca in input un formato non compatibile con la conversione in int (ad esempio delle lettere), oppure una ArithmeticException qualora inserisca un numero non compreso nell'intervallo 0 e 5 (estremi esclusi): package multicatch; import java.util.Scanner; public class OldCatch { public static void main(String args[]) { try { Scanner scanner = new Scanner(System.in); String number = scanner.next(); scanner.clos

Eccezioni checked ed unchecked

DOMANDA: Perché alcune eccezioni mi generano errore durante la compilazione ed altre no? RISPOSTA: In Java esistono due tipi di eccezioni: le unchecked  come nel caso delle RuntimeException e quelle checked (ad esempio le Exception ). La regola che differenzia i due tipi di eccezione è la seguente: le eccezioni unchecked non obbligano il programmatore a gestirle, quelle checked invece si. Facciamo un esempio chiarificatore. Eccezione UNCHECKED : package eccezioni;      public class Eccezione1 extends RuntimeException{ public Eccezione1(String msg){ super (msg); } } Eccezione CHECKED : package eccezioni;   public class Eccezione2 extends Exception{ public Eccezione2(String msg){ super (msg); }   } Classe che lancia i due tipi di eccezioni: package eccezioni ;   public class LanciaEccezioni { public void lancioEccezione1(){ throw new Eccezione1("ECCEZIONE 1"); } public void lanc