Menu
CoddyTech

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.

challenge icon

Tantangan

Mudah

Buat 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.

  1. Baca input string yang menunjukkan jenis ekspresi matematika ("parse", "divide", atau "access")
  2. Baca input string yang menunjukkan nilai pertama
  3. Baca input string yang menunjukkan nilai kedua (jika berlaku)
  4. Berdasarkan jenis ekspresi, lakukan operasi yang sesuai menggunakan penanganan exception tertentu:
    • Untuk "parse": Ubah nilai pertama menjadi integer menggunakan int.parse() dan tangkap FormatException secara khusus
    • Untuk "divide": Parse kedua nilai sebagai integer dan lakukan pembagian, tangkap FormatException untuk error parsing
    • Untuk "access": Buat list dengan nilai pertama dan akses indeks yang ditentukan oleh nilai kedua, tangkap RangeError untuk indeks yang tidak valid
  5. 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: 42

Jika inputnya adalah "parse", "xyz", "unused", programmu harus menghasilkan output:

Operation: parse
Input: xyz
FormatException caught: Invalid number format
Please provide a valid integer

Jika inputnya adalah "divide", "10", "2", programmu harus menghasilkan output:

Operation: divide
Values: 10, 2
Division successful!
Result: 5

Jika inputnya adalah "divide", "10", "abc", programmu harus menghasilkan output:

Operation: divide
Values: 10, abc
FormatException caught: Invalid number format
Cannot perform division with invalid numbers

Jika 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 0

Programmu 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
  
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online