Visualizzazione dei risultati da 1 a 4 su 4

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2014
    Messaggi
    55
    Quote Originariamente inviata da andbin Visualizza il messaggio
    ..cut..
    ho capito, sei stato chiarissimo!
    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?

    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?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    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.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.