Quote Originariamente inviata da Lodin Visualizza il messaggio
quindi nel codice che ho postato nel primo post, gli errori stanno nel fatto che ci sono de catch che non vengono mai raggiunti mediante una istruzione throws nei blocchi try giusto?
Sì, come ripeto è in generale un errore cercare di catturare con catch una eccezione "checked" se il compilatore deduce che nel try quella eccezione NON viene mai lanciata (perché nulla la lancia esplicitamente nel try o nessun metodo invocato dal try la dichiara).

Da questa regola sono esentate le eccezioni java.lang.Exception e java.lang.Throwable (che tecnicamente sono entrambe "checked") ma per un motivo molto semplice e logico. Queste eccezioni sono a monte sia delle eccezioni checked che unchecked. Pertanto deve essere possibile mettere un catch generico di Exception o Throwable anche in assenza di eccezioni checked, perché appunto ci possono essere anche solo eccezioni unchecked.

Se invece tu estendi java.lang.Exception facendo una TuaException, questa è certamente solo checked, quindi vale di nuovo la regola detta sopra, ovvero se cerchi di fare catch (TuaException e) ma nel try nulla la lancia, è un errore.

Quote Originariamente inviata da Lodin Visualizza il messaggio
ho un'altra domanda: se c'è un lancio di eccezione nel blocco finally, il compilatore come si comporta? risale la call stack fino a trovare un catch compatibile con l'eccezione lanciata?
Sì risale lungo lo stack all'indietro fino a trovare un catch applicabile.