Effettivamente il codice postato da centro porta ad una ambiguità nell'interpretazione:
1) differenza fra gestione dell'eccezione interna al metodo e gestione esterna
2) gestione dell'eccezione nel caso del codice postato.
Credo sia il caso di riformulare il problema con del codice diverso:
Gran parte di quello che si poteva dire è già stato detto correttamente da Nosferatu e da Angelo1974: nel primo codice tu dichiari il metodo in modo che il metodo stesso non si preoccupi della gestione delle possibili eccezioni, avvertendo chi usa quel metodo di gestirsele; nel secondo caso, invece, è il metodo stesso a gestire le possibili eccezioni, in modo del tutto trasparente a chi usa quel metodo: chi usa quel metodo può benissimo ignorare l'esistenza delle possibili eccezioni.codice:Differenza fra: public void myMethod(String arg) throws Exception { ... //codice metodo } e public void myMethod(String arg) { try { ... //istruzioni } catch (Exception e) { ... // altre istruzioni } }
Nel caso del codice postato da centrino, invece, sorge un dubbio: pensi che le due parti di codice svolgano la stessa funzione (è quello che diceva Nosferatu quando parlava di soluzioni complementari e non surrogate)? Ebbene no, appunto! La prima parte del tuo codice dichiara un metodo avvertendo chi lo usa che si potrebbe generare un'eccezione al suo interno, "obbligandolo" a gestirla. Nella seconda parte del tuo codice, il metodo viene effettivamente usato e, come da "obbligo" nell'intestazione del metodo, deve essere racchiuso in un blocco try/catch per catturare una possibile eccezione da lui lanciata.
Spero di aver fugato i dubbi.
Ciao.



Rispondi quotando