Kotlin:
Hantering av fel
Hur man gör:
Kotlin stödjer try
, catch
, finally
och throw
för att hantera fel. Så här använder du dem:
fun main() {
val täljare = 10
val nämnare = 0
try {
val resultat = täljare / nämnare
println("Resultat: $resultat")
} catch (e: ArithmeticException) {
println("Kan inte dela med noll, kompis.")
} finally {
println("Detta händer oavsett vad.")
}
}
Utmatning:
Kan inte dela med noll, kompis.
Detta händer oavsett vad.
Om något går fel i try
-blocket, hoppar exekveringen till catch
. Den fångar det specifika felet som kastats (i det här fallet ArithmeticException
). finally
-blocket körs efteråt—oavsett utfall.
Fördjupning
try-catch
-blocket har funnits sedan programmeringens tidiga dagar—det är som ett säkerhetsnät. Kotlin erbjuder också throw
för att manuellt kasta ett undantag in i ringen, och det finns finally
för kod som måste köras—ofta städuppgifter.
Alternativ inkluderar Result
-typen och Kotlins try
som ett uttryck.
val resultat: Result<Int> = try {
Result.success(täljare / nämnare)
} catch (e: ArithmeticException) {
Result.failure(e)
}
Detta tillvägagångssätt returnerar ett Result
-objekt—du får antingen en framgång eller ett misslyckande utan dramatiken hos ett ohanterat undantag.
Implementeringen i Kotlin är snygg eftersom du kan använda try
som ett uttryck, vilket innebär att det returnerar ett värde. Val som dessa gör felhanteringen i Kotlin ganska mångsidig. Det handlar om att välja rätt verktyg för jobbet, precis som du skulle göra i en verkstad.
Se också
- Kotlin-dokumentation om Undantag: Kotlin Exception Handling
- Kotlin-dokumentation om
Result
-typen: Kotlin Result - Effective Java, 3:e upplagan, av Joshua Bloch—fantastiska insikter om undantag, även om den är specifik för Java.