Verkko- ja jäsennysvirheiden käsittely
Muunna Ktorin ja serialisoijan poikkeukset tuloksiksi
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. 🛡️
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
- Sealed-tulostyyppi
- Verkko- ja jäsennysvirheiden käsittely
- Virheiden yhdistäminen käyttöliittymäviesteihin
- Uudelleenyritys ja offline-varatoiminnot