Universitas Kebudayaan Digital Makassar

Universitas Kebudayaan Digital Makassar (UKDMKS) memadukan inovasi teknologi digital dengan pelestarian budaya lokal. Bergabunglah untuk membangun masa depan berbasis budaya dan teknologi!

android kotlin

Belajar Menggunakan Exception Handling di Kotlin

Exception Handling

Kode yang baik yaitu kode yang terhindar dari segala bentuk kejadian dengan efek buruk pada aplikasi kita. Kejadian tersebut pada programming disebut Exception. Hal terburuk yang disebabkan oleh exception ini adalah dapat terhentinya aplikasi ketika dijalankan. Hal seperti ini seharusnya kita hindari. Nah karena itu kita harus mengetahui cara menangani suatu exception (Exception Handling).


Apa itu Exception?

Exception adalah event (kejadian) yang dapat mengacaukan jalannya suatu program. Pada Kotlin semua exception bersifat Unchecked, yang artinya exception terjadi karena kesalahan pada kode kita. Berikut ini beberapa contoh Unchecked Exception yang sering mengganggu jalannya program kita:
  • ArithmeticException
  • NumberFormatException
  • NullPointerException
ArithmeticException merupakan exception yang terjadi karena kita membagi suatu bilangan dengan nilai nol. Berikut merupakan contoh kode yang dapat membangkitkan ArithmeticException.


  1. fun main() {

  2.     val someValue = 6

  3.     println(someValue / 0)

  4. }

  5.  

  6. /*

  7. output:

  8.     Exception in thread "main" java.lang.ArithmeticException: / by zero

  9. */



NumberFormatException disebabkan karena terjadi kesalahan dalam format angka. Sebagai contoh, kita akan mengubah sebuah nilai String menjadi Integer tetapi nilai String yang akan kita ubah tidak memiliki format angka yang benar, sehingga dapat membangkitkan NumberFormatException. Berikut contoh kodenya:


  1. fun main() {

  2.     val someStringValue = "18.0"

  3.     println(someStringValue.toInt())

  4. }

  5.  

  6. /*

  7. output:

  8.     Exception in thread "main" java.lang.NumberFormatException: For input string: "18.0"

  9. */


Dan yang terakhir adalah NullPointerException atau NPE. Walaupun Kotlin memiliki operator Null Safety, NPE tetap bisa saja terjadi. 
NPE terjadi karena sebuah variabel atau objek memiliki nilai null, padahal seharusnya objek atau variabel tersebut tidak boleh null. Berikut contoh kasus yang dapat menyebabkan NullPointerException:


  1. fun main() {

  2.     val someNullValue: String? = null

  3.     val someMustNotNullValue: String = someNullValue!!

  4.     println(someMustNotNullValue)

  5. }

  6.  

  7. /*

  8. output:

  9.     Exception in thread "main" kotlin.NullPointerException at MainKt.main(Main.kt:3)

  10. */


Exception handling dapat diterapkan dengan beberapa cara. Di antaranya adalah dengan menggunakan try-catchtry-catch-finally, dan multiple catch. Mari kita pelajari ketiga cara tersebut.

try-catch

Salah satu cara untuk menangani suatu exception adalah menggunakan try-catch. Kode yang dapat membangkitkan suatu exception disimpan dalam blok try, dan jika exception tersebut terjadi, maka blok catch akan terpanggil. Berikut cara penulisan try-catch pada Kotlin: 


  1. try {

  2.     // Block try, menyimpan kode yang membangkitkan exception

  3. } catch (e: SomeException) {

  4.     // Block catch akan terpanggil ketika exception bangkit.

  5. }


Dengan menuliskan kode dalam blok try, kode kita menjadi terproteksi dari exception. Jika terjadi exception maka program tidak akan terhenti atau crash, namun akan dilempar menuju blok catch.  Di sana kita dapat menuliskan sebuah kode alternatif untuk menampilkan pesan eror atau yang lainnya.


  1. fun main() {

  2.     val someNullValue: String? = null

  3.     lateinit var someMustNotNullValue: String

  4.  

  5.     try {

  6.         someMustNotNullValue = someNullValue!!

  7.         println(someMustNotNullValue)

  8.     } catch (e: Exception) {

  9.         someMustNotNullValue = "Nilai String Null"

  10.         println(someMustNotNullValue)

  11.     }

  12. }

  13.  

  14. /*

  15. output:

  16.     Nilai String Null

  17. */



try-catch-finally

Selain terdapat blok try dan catch, ada juga blok finally. Hanya saja blok ini bersifat opsional. finally akan dieksekusi setelah program keluar dari blok try ataupun catch. Bahkan finally juga tereksekusi ketika terjadi exception yang tidak terduga. Exception tidak terduga terjadi ketika kita menggunakan NullPointerException pada catch namun exception yang terjadi adalah NumberFormatException
Sebagai contoh, mari kita ubah kode yang sebelumnya dengan menerapkan finally:


  1. fun main() {

  2.     val someNullValue: String? = null

  3.     lateinit var someMustNotNullValue: String

  4.  

  5.     try {

  6.         someMustNotNullValue = someNullValue!!

  7.     } catch (e: Exception) {

  8.         someMustNotNullValue = "Nilai String Null"

  9.     } finally {

  10.         println(someMustNotNullValue)

  11.     }

  12. }

  13.  

  14. /*

  15. output:

  16.     Nilai String Null

  17. */


Dengan menerapkan finally, fungsi println() cukup dituliskan pada blok finally.

Multiple Catch

Dari kode yang kita coba sebelumnya, kita menggunakan exception untuk menangani semua tipe exception yang terjadi. 
Baik itu ketika terjadi NullPointerException atau NumberFormatException. Sebenarnya pada catch kita dapat secara spesifik memilih tipe exception apa yang ingin ditangani. Multiple catch memungkinkan untuk penanganan exception dapat ditangani lebih dari satu tipe exception
Hal ini sangat berguna ketika kita ingin menangani setiap tipe exception dengan perlakuan yang berbeda. Berikut contoh struktur kode dengan menerapkan multiple catch:


  1. try{

  2.     // Block try, menyimpan kode yang membangkitkan exception

  3. } catch (e: NullPointerException) {

  4.     // Block catch akan terpanggil ketika terjadi NullPointerException.

  5. } catch (e: NumberFormatException) {

  6.     // Block catch akan terpanggil ketika terjadi NumberFormatException.

  7. } catch (e: Exception) {

  8.     // Block catch akan terpanggil ketika terjadi Exception selain keduanya.

  9. }

  10. finally {

  11.     // Block finally akan terpanggil setelah keluar dari block try atau catch

  12. }


Dari struktur kode di atas, kita dapat melihat terdapat 3 (tiga) blok catch. Block catch yang pertama menggunakan parameter NullPointerException, sehingga jika terjadi NullPointerException maka blok catch tersebut akan dieksekusi. 
Yang kedua block catch dengan parameter NumberFormatException, sehingga jika terjadi NumberFormatException maka blok tersebut yang akan dieksekusi. 
Dan yang terakhir blok catch dengan parameter Exception, blok ini akan menangani seluruh exception yang terjadi kecuali untuk dua exception yang telah ditentukan pada blok sebelumnya. 
Mari kita coba terapkan contoh kode yang sebelumnya kita buat dengan menggunakan multiple catch.
  1. import kotlin.NumberFormatException
  2.  
  3. fun main() {
  4.     val someStringValue: String? = null
  5.     var someIntValue: Int = 0
  6.  
  7.     try {
  8.         someIntValue = someStringValue!!.toInt()
  9.     } catch (e: NullPointerException) {
  10.         someIntValue = 0
  11.     } catch (e: NumberFormatException) {
  12.         someIntValue = 1
  13.     } finally {
  14.         when(someIntValue){
  15.             0 -> println(“Catch block NullPointerException terpanggil !”)
  16.             1 -> println(“Catch block NumberFormatException terpanggil !”)
  17.             else -> println(someIntValue)
  18.         }
  19.     }
  20. }
  21.  
  22. /*
  23. output:
  24.     Catch block NullPointerException terpanggil!
  25. */
Output kode di atas menjelaskan bahwa blok catch dengan parameter NullPointerException terpanggil. Sebabnya, pada variabel someStringValue kita menetapkan null sebagai nilainya.
Berbeda ketika kita menginisialisasi nilai someStringValue dengan nilai “12.0” maka exception yang akan terjadi adalah NumberFormatException dengan begitu blok catch kedua yang akan terpanggil dan akan menghasilkan output sebagai berikut:
Catch block NumberFormatException terpanggil!
Namun jika kedua exception tersebut tidak terjadi, dalam arti nilai someStringValue berhasil diubah dalam bentuk Integer, maka output yang dihasilkan adalah nilai dari Integernya tersebut. Contohnya, saat nilai someStringValue diinisialisasi dengan nilai “12.” Berikut ini hasilnya. :
12

Asalas | Unlock Anime, Manhwa & Donghua Like Never BeforeFinasteriden: Unlock the Secrets of the Movie World!Marians Woman: Celebrating Beauty Around the WorldArheon - Unveiling the Secrets of Food & Origins WorldwideMPAPER The Ultimate Destination for Anime & Manga FansANMC21: Your Guide to Smarter Living and SuccessMV Agusta of Tampa: Your Automotive News HubTech and Play: Your Hub for Technology, Gaming, and GadgetsRebeccaSommer : Stories & Cultures from Around the WorldUETRABAJANDOJUNTOS - Inside the Music World’s Best-Kept SecretsVandelay Armor - Viral News and Global UpdatesGainesville Sun: Technology & Computers UnveiledGRFX Gaming Party Bus: Journey Through Gaming ErasHouse of Beauty: Celebrating the World's Most Beautiful WomenLearn Mistake: Wisdom for a Better LifeSports Hope Alive: Portal Olahraga DuniaWorld News TW - The Hottest Viral News & Global HeadlinesWriter Sujatha - Life Lessons & Struggles That Inspirehttps://128.199.185.186/https://143.198.89.74/https://165.227.47.178/https://170.64.208.214/https://170.64.192.239/https://46.101.102.216/LVONLINEtelegram lvonlinehttps://www.thecarbongenie.com/https://www.aievea-bijou.com/https://www.slashpolicy.com/https://www.benwestbeech.com/https://www.hh-bags.com/https://www.drupalforfacebook.org/https://www.lvonline.boats/https://www.lvoslot.com/https://www.lvobet.id/https://www.lvoslot.id/https://www.lvonline000.com/https://www.lvonline001.com/https://www.lvonline002.com/https://www.lvonline003.com/https://www.lvonline004.com/https://www.lvonline005.com/https://www.lvonline006.com/https://www.lvonline007.com/https://www.lvonline008.com/https://www.lvonline009.com/https://www.lvonline010.com/https://www.lvonlinepoker.com/https://www.lvonlinebola.com/https://www.lvonlinekasino.com/https://www.lvonline.io/https://www.lvonline.store/https://www.lvonline.online/https://www.situslvonline.us/situs bandar lvonlinehttps://146.190.97.83/https://143.198.209.134/https://188.166.246.204/https://167.172.83.179/https://togelhok.tv/https://www.togelhok.id/https://earthtoweb.com/https://www.elearningfacultymodules.org/https://www.how6youtoknowc.org/https://128.199.71.129/https://167.172.64.185/https://152.42.192.250/https://www.capcut88.com/https://www.capcut88.co/https://towsonsmiles.com/https://www.campur88.com/https://www.campur88.org/https://www.campur88.work/https://www.campur88.xyz/https://www.campur88.lol/https://www.nagacampur.biz/https://www.nagacampur.club/https://www.nagacampur.co/https://www.nagacampur.me/https://www.nagacampur.xyz/https://www.nasicampur88.com/https://165.232.175.185/https://152.42.164.228/https://152.42.194.203/https://152.42.169.214/https://www.campurslot.com/https://www.campurslot.id/https://www.campurslot.co/https://www.campurslot.org/https://www.campurslot.homes/https://www.campurslot.design/Badan Lembaga Pendidikan Ilmu Komputer SubangUniversitas Negeri JeparaLembaga Universitas Kristen MaranthaSMP 3 Negri Nganjukhttps://iklanmalay.com/https://promobola.comhttps://kapsychologists.comhttps://propertycloudsite.comSattar777 NewsVR Slot Online NewsRuby888 Online Slot NewsBerita Global Klik Agenslot228Agen Sloto SG777 NewsGold Club SlotOnline NewsAzar Marra Kech NewsBerita Sidney dan MancanegaraBerita Seputar Sumsel dan DuniaBerita Rehabilitasi Judi OnlineBerita Link Gacor TerupdateItalian Tuition News UpdateWPJS Online NewsBerita Agen Slot RoyalThai Slot Online NewsAll Online Game NewsOnline Game News UpdateAsian Lotre NewsBerita Demo Dana SlotBerita Kalbar ProvLocanda della Maria NewsWye Valley NewsBerita Agen Slot1004Berita Agen Slot33Agen Slot399 NewsPlayboy Slot Online NewsSlot Online BB Slot NewsSlot Online 911 News365 Slot Online NewsEat Atlah Newsambamali canadaInfo Seputar Sepakbolacentre thoughtBerita Hiburanopen etherpadras indo groupresistance manualPrediksi Shiowe want real newsthe poisoned pawnindonesia reclaimed teakswift kennedy and copullip passionmy passion foraim torontoPublic FlashesFriweb TeknologiIngenious Gamersthe late show gardensGishPuppy Newsslot danaOregon Farm Garden NewsViral Pulse GlobaljumpajpPromo Bola soccer Captivates The WorldKapsychologists World First The Science of Mental Health - Understanding Psychiatry: The Science of Mental HealthPropertyCloudSite How to Make Smarter Investments in Today’s MarketArnavichara Ultimate Guide Right Business SoftwareAuscare Disability A Comprehensive Guide to Retirement Homes Finding the Perfect Place to Enjoy Your Golden YearsSeries Mp4 The Future of Entertainment Streaming and Downloadable Video ExplainedAlogirlxinh How to Create a Successful Personal Page or Blog in 2024ihokibethttps://bengbulang-karangpucung.cilacapkab.go.id/https://comunicacion.unsa.edu.ar/https://seychellesbiodiversitychm.sc/https://www.925lms.com/https://www.guisseny.memoire.bzh/https://www.mobiliars.org/https://www.squashparkwieliczka.pl/
Asalas | Unlock Anime, Manhwa & Donghua Like Never BeforeFinasteriden: Unlock the Secrets of the Movie World!Marians Woman: Celebrating Beauty Around the WorldArheon - Unveiling the Secrets of Food & Origins WorldwideMPAPER The Ultimate Destination for Anime & Manga FansANMC21: Your Guide to Smarter Living and SuccessMV Agusta of Tampa: Your Automotive News HubTech and Play: Your Hub for Technology, Gaming, and GadgetsRebeccaSommer : Stories & Cultures from Around the WorldUETRABAJANDOJUNTOS - Inside the Music World’s Best-Kept SecretsVandelay Armor - Viral News and Global UpdatesGainesville Sun: Technology & Computers UnveiledGRFX Gaming Party Bus: Journey Through Gaming ErasHouse of Beauty: Celebrating the World's Most Beautiful WomenLearn Mistake: Wisdom for a Better LifeSports Hope Alive: Portal Olahraga DuniaWorld News TW - The Hottest Viral News & Global HeadlinesWriter Sujatha - Life Lessons & Struggles That Inspirehttps://128.199.185.186/https://143.198.89.74/https://165.227.47.178/https://170.64.208.214/https://170.64.192.239/https://46.101.102.216/LVONLINEtelegram lvonlinehttps://www.thecarbongenie.com/https://www.aievea-bijou.com/https://www.slashpolicy.com/https://www.benwestbeech.com/https://www.hh-bags.com/https://www.lvonline.boats/https://www.lvoslot.com/https://www.lvobet.id/https://www.lvoslot.id/https://www.lvonline000.com/https://www.lvonline001.com/https://www.lvonline002.com/https://www.lvonline003.com/https://www.lvonline004.com/https://www.lvonline005.com/https://www.lvonline006.com/https://www.lvonline007.com/https://www.lvonline008.com/https://www.lvonline009.com/https://www.lvonline010.com/https://www.lvonlinepoker.com/https://www.lvonlinebola.com/https://www.lvonlinekasino.com/https://www.lvonline.io/https://www.lvonline.store/https://www.lvonline.online/https://www.situslvonline.us/situs bandar lvonlinehttps://146.190.97.83/https://143.198.209.134/https://188.166.246.204/https://167.172.83.179/https://togelhok.tv/https://www.togelhok.id/https://earthtoweb.com/https://www.elearningfacultymodules.org/https://www.how6youtoknowc.org/https://128.199.71.129/https://167.172.64.185/https://152.42.192.250/https://www.capcut88.com/https://www.capcut88.co/https://towsonsmiles.com/https://www.campur88.com/https://www.campur88.org/https://www.campur88.work/https://www.campur88.xyz/https://www.campur88.lol/https://www.nagacampur.biz/https://www.nagacampur.club/https://www.nagacampur.co/https://www.nagacampur.me/https://www.nagacampur.xyz/https://www.nasicampur88.com/https://165.232.175.185/https://152.42.164.228/https://152.42.194.203/https://152.42.169.214/https://www.campurslot.com/https://www.campurslot.id/https://www.campurslot.co/https://www.campurslot.org/https://www.campurslot.homes/https://www.campurslot.design/Badan Lembaga Pendidikan Ilmu Komputer SubangUniversitas Negeri JeparaLembaga Universitas Kristen MaranthaSMP 3 Negri Nganjukhttps://iklanmalay.com/https://promobola.comhttps://kapsychologists.comhttps://propertycloudsite.comSattar777 NewsVR Slot Online NewsRuby888 Online Slot NewsBerita Global Klik Agenslot228Agen Sloto SG777 NewsGold Club SlotOnline NewsAzar Marra Kech NewsBerita Sidney dan MancanegaraBerita Seputar Sumsel dan DuniaBerita Rehabilitasi Judi OnlineBerita Link Gacor TerupdateItalian Tuition News UpdateWPJS Online NewsBerita Agen Slot RoyalThai Slot Online NewsAll Online Game NewsOnline Game News UpdateAsian Lotre NewsBerita Demo Dana SlotBerita Kalbar ProvLocanda della Maria NewsWye Valley NewsBerita Agen Slot1004Berita Agen Slot33Agen Slot399 NewsPlayboy Slot Online NewsSlot Online BB Slot NewsSlot Online 911 News365 Slot Online NewsEat Atlah Newsambamali canadaInfo Seputar Sepakbolacentre thoughtBerita Hiburanopen etherpadras indo groupresistance manualPrediksi Shiowe want real newsthe poisoned pawnindonesia reclaimed teakswift kennedy and copullip passionmy passion foraim torontoPublic FlashesFriweb TeknologiIngenious Gamersthe late show gardensGishPuppy Newsslot danaOregon Farm Garden NewsViral Pulse GlobaljumpajpPromo Bola soccer Captivates The WorldKapsychologists World First The Science of Mental Health - Understanding Psychiatry: The Science of Mental HealthPropertyCloudSite How to Make Smarter Investments in Today’s MarketArnavichara Ultimate Guide Right Business SoftwareAuscare Disability A Comprehensive Guide to Retirement Homes Finding the Perfect Place to Enjoy Your Golden YearsSeries Mp4 The Future of Entertainment Streaming and Downloadable Video ExplainedAlogirlxinh How to Create a Successful Personal Page or Blog in 2024ihokibethttps://bengbulang-karangpucung.cilacapkab.go.id/https://comunicacion.unsa.edu.ar/https://seychellesbiodiversitychm.sc/https://www.925lms.com/https://www.guisseny.memoire.bzh/https://www.mobiliars.org/https://www.squashparkwieliczka.pl/https://mok.edu.kz/https://www.mware.cloud/https://www.facilitiescoolingandheating.com.au/https://www.krillpay.ng/https://925worksuite.com/https://www.scenarioaulongcourt-archives.com/http://www.lesateliersdusoleil.fr/