Menangkap Pengecualian dengan 'on'
Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 40 dari 65.
Meskipun blok try-catch dasar menangkap semua exception yang terjadi, terkadang kamu perlu menangani tipe exception yang berbeda dengan cara yang berbeda. Kata kunci on memungkinkan kamu menangkap tipe exception tertentu dan memberikan respons khusus untuk masing-masing tipe.
Alih-alih menangkap semua exception dengan catch umum, kamu dapat menargetkan exception tertentu menggunakan on yang diikuti tipe exception. Ini memberimu lebih banyak kendali atas cara programmu merespons berbagai situasi error.
try {
int number = int.parse("abc");
} on FormatException {
print("Please enter a valid number");
}Dalam contoh ini, kode secara khusus menangkap FormatException, yang terjadi saat mencoba mengurai teks yang tidak valid sebagai angka. Dengan begitu, kamu bisa memberikan pesan yang jelas dan mudah dipahami pengguna, yang langsung menjelaskan masalahnya, alih-alih menampilkan pesan error umum yang mungkin membingungkan pengguna.
Kamu juga bisa menggabungkan beberapa blok on untuk menangani berbagai tipe exception dengan respons yang sesuai, sehingga penanganan error-mu menjadi lebih tepat dan mudah digunakan.
Tantangan
MudahBuat program yang menunjukkan cara menangkap exception tertentu menggunakan kata kunci on. Programmu akan memproses berbagai jenis input pengguna dan menangani jenis exception tertentu dengan pesan error yang sesuai.
- Baca input string yang menunjukkan jenis ekspresi matematika (
"parse","divide", atau"access") - Baca input string yang menunjukkan nilai pertama
- Baca input string yang menunjukkan nilai kedua (jika berlaku)
- Berdasarkan jenis ekspresi, lakukan operasi yang sesuai menggunakan penanganan exception tertentu:
- Untuk
"parse": Ubah nilai pertama menjadi integer menggunakanint.parse()dan tangkapFormatExceptionsecara khusus - Untuk
"divide": Parse kedua nilai sebagai integer dan lakukan pembagian, tangkapFormatExceptionuntuk error parsing - Untuk
"access": Buat list dengan nilai pertama dan akses indeks yang ditentukan oleh nilai kedua, tangkapRangeErroruntuk indeks yang tidak valid - Tampilkan hasil atau pesan error tertentu dengan format persis seperti yang ditunjukkan di bawah
Misalnya, jika inputnya adalah "parse", "42", "unused", programmu harus menghasilkan output:
Operation: parse
Input: 42
Parsing successful!
Result: 42Jika inputnya adalah "parse", "xyz", "unused", programmu harus menghasilkan output:
Operation: parse
Input: xyz
FormatException caught: Invalid number format
Please provide a valid integerJika inputnya adalah "divide", "10", "2", programmu harus menghasilkan output:
Operation: divide
Values: 10, 2
Division successful!
Result: 5Jika inputnya adalah "divide", "10", "abc", programmu harus menghasilkan output:
Operation: divide
Values: 10, abc
FormatException caught: Invalid number format
Cannot perform division with invalid numbersJika inputnya adalah "access", "hello", "1", programmu harus menghasilkan output:
Operation: access
List: [hello]
Index: 1
RangeError caught: Index out of range
Valid indices are 0 to 0Programmu harus menggunakan blok try-catch terpisah dengan kata kunci on untuk menangkap FormatException dan RangeError secara khusus. Setiap jenis exception harus memiliki pesan error tersendiri yang menjelaskan dengan jelas apa yang salah. Untuk operasi "access", buat list yang hanya berisi nilai input pertama, lalu coba akses indeks yang ditentukan oleh nilai input kedua.
Coba sendiri
import 'dart:io';
void main() {
// Baca input
String? operation = stdin.readLineSync();
String? firstValue = stdin.readLineSync();
String? secondValue = stdin.readLineSync();
// Tampilkan informasi operasi
print('Operation: $operation');
// TODO: Tulis kodemu di bawah ini
// Gunakan blok try-catch dengan kata kunci 'on' untuk menangani pengecualian tertentu
// Tangani FormatException untuk operasi parse dan divide
// Tangani RangeError untuk operasi access
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Manipulasi list Tingkat Lanjut
Properti list: first dan lastStatus list: isEmpty dan isNotEmpMembalikkan listMenambahkan ke list: insertMenghapus dari list: removeWhereMencari dalam list: indexOfMengurutkan listMengacak listRekap: Pengatur list4Manipulasi Map Lanjutan
Melakukan perulangan pada MapMemeriksa kunci dan nilaiProperti Map: kunci dan nilaiPenambahan Bersyarat: putIfAbsentMenghapus Entri dari MapMap BersarangRingkasan: Pembaruan Inventaris2Operasi Fungsional pada list
Mengubah dengan 'map'Menyaring dengan 'where'Menggunakan '.toList()'Memeriksa Kondisi dengan 'any'Kondisi dengan 'every'Menemukan dengan 'firstWhere'Ulasan: Penyaringan Data5Proyek: Perhitungan Keranjang Belanja
Menyiapkan ProyekMenambahkan Barang ke Keranjang3set
Apa itu set?Membuat setMenambahkan dan menghapus elemen dari setMemeriksa elemen dalam setMengubah list menjadi setGabungan setIrisan setSelisih setRangkuman: Daftar tamu unik6Penanganan Error Dasar
Apa Itu Pengecualian?Blok 'try-catch'Menangkap Pengecualian dengan 'on'Blok 'finally'Melempar PengecualianRingkasan: Pembagian AmanLatihan sendiri: Compiler Dart online