In realtà non sono bravo nel campo, potrei però dirti che ce differenza funzionale.
Il try-catch è proprio la gestione dell'eccezione, il blocco try si ferma quando viene lanciata un'eccezione e vengono poi controllati i blocchi catch in base all'eccezione lanciata.
Un'eccezione lanciata è proprio una classe che estende la classe Throwable. Ti faccio un esempio:
Mettiamo caso io voglia calcolare la divisione di due numeri e gestire il problema del fatto che il denominatore non può essere uguale a zero.
Allora mi servirà un'eccezione, una classe che estende Throwable, che informa del problema:
A questo punto nel metodo che effettua la divisione tra due numeri, devo definire che può lanciare un'eccezione del tipo Eccezione e lanciare un istanza di Eccezione, quando il denominatore della frazione è proprio uguale a zero.codice:class Eccezione extends Throwable { /** * */ private static final long serialVersionUID = 1L; public Eccezione() { System.err.println("Il denominatore non può essere uguale a zero."); } }
Il metodo può essere questo:
Come vedi l'eccezione lanciata è un'istanza della classe Eccezione. A questo punto nel metodo main posso fare questo:codice:public static double divisione(int num, int den) throws Eccezione { if (den==0) { throw new Eccezione(); } else { return num/den; } }
Ti ho mostrato essenzialmente come creare un'eccezione, però altro non so riguardo a queste quindi se vuoi sapere di più ti consiglio di leggerti un tutorial completo o aspettare qualcuno più bravo di me sul forum.codice:public static void main(String[] args) { s = new Scanner(System.in); System.out.print("Inserisci il numeratore: "); int num = s.nextInt(); System.out.println(); System.out.print("Inserisci il denominatore: "); int den = s.nextInt(); System.out.println(); try { System.out.println("Il risultato è: "+divisione(num,den)); } catch (Eccezione e) { System.out.println("L'eccezione è dichiarata e gestita."); } }
Ah la classe che estende Throwable eredita da essa il metodo printStackTrace() che mostra il solito messaggio di eccezione, in genere che mostra dove è stata lanciata l'eccezione nel codice. Il costruttore con il metodo di stampa è solo un'aggiunta che ho messo per farti vedere che l'eccezione è una classe qualsiasi.

Rispondi quotando