Kotlin:
Virheiden käsittely

Kuinka:

Kotlin tarjoaa try, catch, finally ja throw virheiden hallintaan. Tässä on kuinka käytät niitä:

fun main() {
    val osoittaja = 10
    val nimittäjä = 0

    try {
        val tulos = osoittaja / nimittäjä
        println("Tulos: $tulos")
    } catch (e: ArithmeticException) {
        println("Nollalla ei voi jakaa, kaveri.")
    } finally {
        println("Tämä tapahtuu joka tapauksessa.")
    }
}

Tuloste:

Nollalla ei voi jakaa, kaveri.
Tämä tapahtuu joka tapauksessa.

Jos try-lohkossa tapahtuu virhe, suoritus siirtyy catch-lohkoon. Se ottaa kiinni tietyn heitotun virheen (tässä tapauksessa ArithmeticException). Finally-lohko suoritetaan sen jälkeen - riippumatta lopputuloksesta.

Syväsukellus

Try-catch-lohko on ollut olemassa jo varhaisista ohjelmointipäivistä lähtien – se on kuin turvaverkko. Kotlin tarjoaa myös throw heittämään poikkeuksen kehiin manuaalisesti, ja finally löytyy koodille, joka on pakko suorittaa - usein siivoustyötä.

Vaihtoehtoina ovat Result-tyyppi ja Kotlinin try lausekkeena.

val tulos: Result<Int> = try {
    Result.success(osoittaja / nimittäjä)
} catch (e: ArithmeticException) {
    Result.failure(e)
}

Tämä lähestymistapa palauttaa Result-olion - saat joko onnistumisen tai epäonnistumisen ilman käsittelemättömän poikkeuksen draamaa.

Totetutus Kotlinissa on siistiä, koska voit käyttää try lausekkeena, mikä tarkoittaa, että se palauttaa arvon. Tällaiset valinnat tekevät virheiden käsittelystä Kotlinissa melko monipuolista. Kyse on oikean työkalun valinnasta tehtävään, aivan kuten työpajassa.

Katso Myös

  • Kotlinin dokumentaatio poikkeuksista: Kotlin Exception Handling
  • Kotlinin Result-tyyppi dokumentaatio: Kotlin Result
  • Effective Java, 3. painos, kirjoittanut Joshua Bloch - loistavia oivalluksia poikkeuksista, vaikkakin se on Java-spesifi.