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.