Kotlin Multiplatform Academy · Oppitunti

Verkko- ja jäsennysvirheiden käsittely

Muunna Ktorin ja serialisoijan poikkeukset tuloksiksi

Oppitunti 2/413 vaihetta

Verkko- ja jäsennysvirheiden käsittely on ilmainen Kotlin Multiplatform Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Kotlin Multiplatform Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Kotlin Multiplatform Academy-kurssilla on yhteensä 4 oppituntia.

Mistä virheet alkavat

Useimmat virheet syntyvät kahdessa kohdassa: verkkokutsussa ja JSON-jäsentämisessä. Kun käsittelet ne tässä, muu jaettu koodi pysyy siistinä ja vakaana.

Kääri riskialtis kutsu

Sijoittakaa Ktor-pyyntö ja purkaminen yhden try-lohkon sisään. Yksi suojattu kohta on helpompi ymmärtää kuin eri puolille ripotellut tarkistukset.

try {
  val user = client.get(url).body<User>()
} catch (e: Exception) { }

Verkkovirheiden käsittely

Katkennut yhteys aiheuttaa IOException-poikkeuksen. Ottakaa se kiinni ja muuntakaa se selkeäksi Failure-arvoksi, jonka käyttöliittymä voi esittää yhteysongelmana.

catch (e: IOException) {
  Failure("No connection")
}

Jäsennysvirheiden käsittely

Kun JSON ei vastaa mallianne, kotlinx.serialization aiheuttaa SerializationException-poikkeuksen. Käsitelkää se erikseen, jotta tiedätte ongelman olevan datassa eikä verkossa.

catch (e: SerializationException) {
  Failure("Bad data")
}

catch-lohkojen järjestäminen

Luetelkaa specific-poikkeukset ensin ja yleinen Exception viimeisenä. Kotlin käy vaihtoehdot läpi ylhäältä alas, joten tarkat tyypit on sijoitettava ennen kaiken kattavaa käsittelyä.

Palauttakaa, älkää heittäkö poikkeusta uudelleen

Muodostakaa kussakin catch-lohkossa Failure ja palauttakaa se. Poikkeuksen heittäminen uudelleen vain siirtäisi kaatumisen ylöspäin niihin sovelluksiin, joita yritätte suojata.

Säilyttäkää koodi commonMainissa

Tämä suojaus kuuluu shared code-koodiin suoraan kutsun ympärille. Sekä Android että iOS saavat silloin saman turvallisen Result-arvon ilman ylimääräistä työtä.

Ktorin tilakoodien tarkistaminen

Saavutettava palvelin voi silti vastata koodilla 404 tai 500. Tarkistakaa response status ja muuntakaa myös muut kuin 2xx-koodit Failure-arvoksi.

if (!resp.status.isSuccess())
  return Failure("Server error")

Älkää nielkö virheitä hiljaisesti

Älkää koskaan jättäkö catch-lohkoa tyhjäksi. Log the cause ennen Failure-arvon palauttamista, jotta voitte edelleen selvittää laitteella, mitä todella tapahtui.

runCatching oikotienä

Kotlin tarjoaa runCatching-funktion, joka paketoi lohkon Result-tyyppiseksi arvoksi. Se on siisti vaihtoehto silloin, kun ette tarvitse mukautettua catch-logiikkaa.

val r = runCatching { fetch() }

Yksi käsittelyreitti, kaksi lähdettä

Verkko- ja jäsennysvirheet kulkevat nyt one funnel-käsittelyreitin kautta Failure-tyyppiin, joten kutsuja käsittelee molemmat samalla yksinkertaisella haaralla.

Pikatarkistus

Pohtikaa, miten kotlinx.serialization ilmoittaa ongelmista.

Kertaus

Paketoitte kutsun try-lohkoon, käsittelitte IOException- ja SerializationException-poikkeukset erikseen, muunsitte virheelliset tilakoodit ja palautitte siistit Failure-arvot jaetusta koodista. 🛡️

Aloita maksutta

Opi Kotlin tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Verkko- ja jäsennysvirheiden käsittely” ilmainen?

Kyllä – oppitunnin ”Verkko- ja jäsennysvirheiden käsittely” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Kotlin Multiplatform Academy-kurssin, päivitä CoddyKit PROhon. Kotlin Multiplatform Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Verkko- ja jäsennysvirheiden käsittely”?

Muunna Ktorin ja serialisoijan poikkeukset tuloksiksi Harjoittelet Kotlin Multiplatform Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Kotlin Multiplatform Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Kotlin Multiplatform Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Verkko- ja jäsennysvirheiden käsittely”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Kotlin Multiplatform Academy-oppitunnilla?

Kyllä. Jokainen Kotlin Multiplatform Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Sealed-tulostyyppi
  2. Verkko- ja jäsennysvirheiden käsittely
  3. Virheiden yhdistäminen käyttöliittymäviesteihin
  4. Uudelleenyritys ja offline-varatoiminnot
← Takaisin: Kotlin Multiplatform Academy