try/catch/finally come espressione
Utilizzi try-catch come espressione per restituire valori da codice soggetto a errori.
try/catch/finally come espressione è una lezione Kotlin Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Kotlin Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Kotlin Academy include 4 lezioni in totale.
try è un'espressione
In Kotlin, try/catch è un'espressione: restituisce un valore. L'ultima espressione nel blocco try o catch costituisce il risultato.
try/catch di base
Inserisca in un blocco try il codice che potrebbe lanciare un'eccezione; gestisca le eccezioni in catch.
fun main() {
try {
val n = "abc".toInt()
println(n)
} catch (e: NumberFormatException) {
println("Not a number: ${e.message}")
}
}try restituisce un valore
Assegni a una variabile il risultato di un try/catch. Il valore corrisponde a quello prodotto dal blocco selezionato.
fun main() {
val n: Int = try {
"42".toInt()
} catch (e: NumberFormatException) {
-1
}
println(n) // 42
}try nel corpo di una funzione
È possibile utilizzare try come corpo di una funzione con corpo espressione.
fun parseOrDefault(s: String, default: Int): Int = try {
s.toInt()
} catch (e: NumberFormatException) {
default
}
fun main() {
println(parseOrDefault("42", 0)) // 42
println(parseOrDefault("abc", 0)) // 0
}Più clausole catch
Elenchi più clausole catch per diversi tipi di eccezione. Viene utilizzata la prima corrispondenza.
fun main() {
val result: String = try {
val list = listOf(1)
list[5].toString()
} catch (e: IndexOutOfBoundsException) {
"index out of bounds"
} catch (e: Exception) {
"other error"
}
println(result)
}Blocco finally
finally viene sempre eseguito e viene utilizzato per la pulizia. Non influisce sul valore restituito dall'espressione try.
fun main() {
val n: Int = try {
"42".toInt()
} catch (e: NumberFormatException) {
-1
} finally {
println("cleanup runs")
}
println("value = $n")
}try con più istruzioni
Utilizzi un blocco con più istruzioni; il valore corrisponde all'ultima espressione.
fun main() {
val result: String = try {
val n = 10 / 2
val s = "Result is $n"
s.uppercase()
} catch (e: Exception) {
"ERROR"
}
println(result) // RESULT IS 5
}Intercettare più tipi
Kotlin non supporta la sintassi multi-catch di Java (catch (A | B)). Utilizzi un supertipo comune oppure clausole catch separate.
fun parse(s: String): Int = try {
s.toInt()
} catch (e: RuntimeException) { // covers NumberFormatException etc.
-1
}
fun main() {
println(parse("42"))
println(parse("nope"))
}L'ordine delle catch è importante
Indichi le eccezioni specifiche prima dei rispettivi supertipi; in caso contrario, il supertipo intercetta per primo.
fun main() {
try {
throw NumberFormatException("oops")
} catch (e: NumberFormatException) {
println("specific: ${e.message}")
} catch (e: Exception) {
println("generic")
}
}Restituire da try
È possibile restituire un valore in anticipo dall'interno di try: il blocco finally viene comunque eseguito.
fun process(x: Int): String {
return try {
require(x > 0) { "must be positive" }
"ok: $x"
} catch (e: IllegalArgumentException) {
"error: ${e.message}"
} finally {
println("processing done")
}
}
fun main() {
println(process(5))
println(process(-1))
}Anti-pattern: catch vuoto
I blocchi catch vuoti nascondono gli errori. Come minimo, registri l'eccezione o la rilanci.
fun main() {
try {
"abc".toInt()
} catch (e: NumberFormatException) {
// BAD: silently swallow
}
println("continued")
}Verifica rapida
In Kotlin, a cosa viene valutata un'espressione try/catch?
Riepilogo
try/catch è un'espressione: restituisce un valore. Elenchi le eccezioni specifiche prima dei supertipi, utilizzi finally per la pulizia ed eviti i blocchi catch vuoti. Può utilizzarla come corpo di una funzione o per assegnare un valore predefinito in caso di errore.
Domande Frequenti
La lezione «try/catch/finally come espressione» è gratuita?
Sì — il testo completo di «try/catch/finally come espressione» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Kotlin Academy, passa a CoddyKit PRO. Il corso Kotlin Academy include 4 lezioni in totale.
Cosa imparerò in «try/catch/finally come espressione»?
Utilizzi try-catch come espressione per restituire valori da codice soggetto a errori. Eserciti Kotlin Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Kotlin Academy?
Non è richiesta alcuna esperienza precedente. Kotlin Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «try/catch/finally come espressione»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Kotlin Academy?
Sì. Ogni lezione Kotlin Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- try/catch/finally come espressione
- Creare classi di eccezioni personalizzate
- runCatching e Result
- Rilanciare eccezioni e concatenarle