Hallowww semua, di artikel ini saya coba membahas mengenai Exception Handling di bahasa Dart.
Apa itu Exception Handling ? ini merupakan cara komputer untuk mengelola error. Jadi saat bikin program itu tidak semuanya akan berjalan mulus, nanti pasti ada error yang harus kita kelola.
Pada kondisi apa terjadi error ? Umumnya exception handling digunakan saat:
- Tipe data tidak sesuai
- Method / property tidak ditemukan
- Error saat membaca file / IO
- Kesalahan jaringan saat melakukan request / response
- (...tambahkan dikolom komentar yaa hehe)
Di Dart sendiri sudah disediakan fitur exception handling, dan caranya pun mirip seperti bahasa pemrograman lainnya. Konsep utama dari exception handling adalah try-catch.
try-catch
try
merupakan tahapan awal untuk menjalankan exception handling. Sedangkan catch
digunakan untuk menerima errornya.
Contoh programnya :
try {
// Kode disini akan berjalan pertama kali
print("Proses...");
dynamic name = 20;
print(name.length); // Awww error !
print("Finish !"); // Kode tidak dijalankan
} catch (err) {
print("Terjadi kesalahan");
}
Program diatas akan mengeluarkan error karena property length
itu tidak ada di variable name
.
Jadi cara kerjanya adalah pertama kode blok yang ada di dalam try
akan dijalankan terlebih dahulu. Ketika terjadi error maka akan langsung lompat ke blok catch
.
Kode program print("Finish !");
tidak dijalankan.
on
Dari bahasa yang saya pelajari sepertinya, Dart ini membuat konsep baru pada Exception Handling, karena pada umumnya yang tersedia hanyalah try
, catch
, dan finally
tapi di Dart ini ada on
.
Jadi apa itu on
pada Dart ? on
digunakan untuk mengelola error berdasarkan jenis errornya. Di kode sebelumnya kita hanya menggunakan try-catch
saja yang dimana semua error akan masuk ke dalam catch
.
Kode program diatas kita jalankan ulang tapi dengan print yang berbeda:
try {
// Kode disini akan berjalan pertama kali
print("Proses...");
dynamic name = 20;
print(name.length); // Awww error !
print("Finish !"); // Kode tidak dijalankan
} catch (err) {
print("Terjadi kesalahan");
print(err.toString()); // Kode program baru
}
Dari gambar diatas kita melihat ada error dengan jenis NoSuchMethodError
. Dari dokumentasinya, dituliskan:
...corresponding to a failed method call
Artinya error NoSuchMethodError
adalah jenis error yang digunakan ketika method pada variabel tidak ada. Ini terjadi akibat property / method length
tidak ada di variabel name
.
Terus dimana on
nya ?
Nahh disini kita bisa menerapkan keyword on
. Maka programnya menjadi:
try {
// Kode disini akan berjalan pertama kali
print("Proses...");
dynamic name = 20;
print(name.length); // Awww error !
print("Finish !"); // Kode tidak dijalankan
} on NoSuchMethodError {
// Kode program yang dialam `on` ini yang akan dijalankan
print("Method tidak ditemukan");
} catch (err) {
// Tidak dijalankan
print("Terjadi kesalahan");
print(err.toString());
}
Sekarang yang keluar adalah Method tidak ditemukan
bukan Terjadi kesalahan
. Kok iso ? itu karena jenis error nya adalah NoSuchMethodError
jadi kode program yang ada didalam on NoSuchMethodError
itulah yang akan dijalankan.
finally
finally
akan dijalankan ketika semua proses selesai, baik itu ada error atau tidak.
Contoh program ketika ada error:
try {
// Kode disini akan berjalan pertama kali
print("Proses...");
dynamic name = 20;
print(name.length); // Awww error !
print("Finish !"); // Kode tidak dijalankan
} catch (err) {
print("Terjadi kesalahan");
} finally {
print("Proses try-catch selesai");
}
Contoh kode program ketika tidak ada error:
try {
// Kode disini akan berjalan pertama kali
print("Proses...");
dynamic name = 20;
print(name);
print("Finish !"); // Berjalan
} catch (err) {
print("Terjadi kesalahan");
} finally {
print("Proses try-catch selesai");
}
Wait, kenapa harus pakai finally
?
Bukankah sama aja ketika kita tidak menggunakan finally
?
Okee kita coba kalau tanpa finally yaa. Jadi programnya:
try {
// Kode disini akan berjalan pertama kali
print("Proses...");
dynamic name = 20;
print(name.length); // Awww error !
print("Finish !"); // Kode tidak dijalankan
} catch (err) {
print("Terjadi kesalahan");
}
print("Proses try-catch selesai");
Eitss, finally
ini biasanya digunakan untuk membuat program kita lebih konsisten. Umumnya digunakan ketika:
- Selesai terhubung ke database
- Membersihkan memori
Sumber https://stackoverflow.com/a/16705037/9905881
Okee deh mungkin itu saja, untuk pembahasan mengenai error / exception handling di bahasa Dart. Kalau kalian memiliki saran / kritikan silahkan komentar yaa 😉
Terima kasih sudah membaca ~
Top comments (2)
bang klo kasus nya kek gini gimana:
bisa manfaatin while itu, saya sering dapet tugas kuliah kyak gitu
Simplenya sih gini:
Nanti otomatis while nya bakalan jalan terus sampe success nya ngga false