Menu
CoddyTech

Melempar Pengecualian

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 42 dari 65.

Terkadang kamu perlu membuat kondisi error sendiri dalam kodemu. Kata kunci throw memungkinkanmu memicu exception secara manual saat programmu menghadapi situasi yang tidak boleh dilanjutkan.

Ketika kamu throw sebuah pengecualian, pada dasarnya kamu mengatakan, "hentikan semuanya, ada yang salah di sini." Ini berguna untuk memvalidasi input atau menerapkan aturan dalam fungsi-fungsimu. Kamu bisa melempar pesan string sederhana atau membuat tipe pengecualian yang lebih spesifik.

void checkAge(int age) {
  if (age < 0) {
    throw "Age cannot be negative!";
  }
  print("Age is valid: $age");
}

Dalam contoh ini, jika seseorang mencoba memberikan usia negatif, fungsi langsung melemparkan exception dengan pesan yang menjelaskan alasannya. Ini mencegah bagian fungsi lainnya berjalan dengan data yang tidak valid, sehingga kodemu lebih andal dan lebih mudah di-debug.

Melempar exception sangat berguna dalam fungsi yang perlu memvalidasi inputnya sebelum melanjutkan operasi penting.

challenge icon

Tantangan

Mudah

Buat program yang memvalidasi informasi akun pengguna dengan menerapkan fungsi validasi khusus yang melempar exception saat mendeteksi data yang tidak valid. Programmu harus memeriksa beberapa kolom akun dan melempar pesan error tertentu untuk kegagalan validasi yang berbeda.

  1. Baca input string yang mewakili nama pengguna
  2. Baca input string yang mewakili alamat email
  3. Baca input string yang mewakili usia dalam bentuk string
  4. Baca input string yang mewakili kata sandi
  5. Buat fungsi bernama validateUsername yang memeriksa apakah nama pengguna valid:
    • Jika nama pengguna kosong atau memiliki kurang dari 3 karakter, lempar exception: "Username must be at least 3 characters long"
    • Jika nama pengguna berisi spasi, lempar exception: "Username cannot contain spaces"
    • Jika validasi berhasil, cetak: "Username validation passed"
  6. Buat fungsi bernama validateEmail yang memeriksa apakah email valid:
    • Jika email tidak berisi simbol @, lempar exception: "Email must contain @ symbol"
    • Jika email tidak berisi titik . setelah simbol @, lempar exception: "Email must contain a valid domain"
    • Jika validasi berhasil, cetak: "Email validation passed"
  7. Buat fungsi bernama validateAge yang memeriksa apakah usia valid:
    • Ubah string usia menjadi integer menggunakan int.parse()
    • Jika usia kurang dari 13, lempar exception: "Age must be at least 13 years old"
    • Jika usia lebih dari 120, lempar exception: "Age must be realistic (under 120)"
    • Jika validasi berhasil, cetak: "Age validation passed"
  8. Buat fungsi bernama validatePassword yang memeriksa apakah kata sandi valid:
    • Jika kata sandi lebih pendek dari 8 karakter, lempar exception: "Password must be at least 8 characters long"
    • Jika validasi berhasil, cetak: "Password validation passed"
  9. Panggil setiap fungsi validasi secara berurutan dan tangani exception yang terjadi
  10. Tampilkan hasil dalam format persis seperti yang ditunjukkan di bawah ini

Misalnya, jika inputnya adalah "john", "john@email.com", "25", "password123", programmu harus menghasilkan output:

Account Validation System
=========================
Validating username: john
Username validation passed
Validating email: john@email.com
Email validation passed
Validating age: 25
Age validation passed
Validating password: password123
Password validation passed
=========================
All validations passed successfully!
Account created for user: john

Jika inputnya adalah "jo", "john@email.com", "25", "password123", programmu harus menghasilkan output:

Account Validation System
=========================
Validating username: jo
Validation Error: Username must be at least 3 characters long
Account creation failed due to validation errors

Jika inputnya adalah "john doe", "johnemail.com", "12", "pass", programmu harus menghasilkan output:

Account Validation System
=========================
Validating username: john doe
Validation Error: Username cannot contain spaces
Account creation failed due to validation errors

Programmu harus memanggil setiap fungsi validasi dengan urutan yang persis seperti ini: nama pengguna, email, usia, lalu kata sandi. Hentikan validasi dan tampilkan pesan error segera setelah validasi apa pun gagal. Gunakan kata kunci throw untuk memicu exception secara manual dengan pesan error tertentu yang ditampilkan di atas. Setiap fungsi validasi harus memeriksa kolom terkait dan melempar exception jika validasi gagal, atau mencetak pesan keberhasilan jika validasi berhasil.

Coba sendiri

import 'dart:io';

void main() {
  // Baca input
  String? username = stdin.readLineSync();
  String? email = stdin.readLineSync();
  String? age = stdin.readLineSync();
  String? password = stdin.readLineSync();
  
  print("Account Validation System");
  print("=========================");
  
  try {
    // TODO: Buat fungsi validateUsername dan panggil di sini
    print("Validating username: $username");
    
    // TODO: Buat fungsi validateEmail dan panggil di sini
    print("Validating email: $email");
    
    // TODO: Buat fungsi validateAge dan panggil di sini
    print("Validating age: $age");
    
    // TODO: Buat fungsi validatePassword dan panggil di sini
    print("Validating password: $password");
    
    // TODO: Jika semua validasi berhasil, tampilkan pesan keberhasilan
    print("=========================");
    print("All validations passed successfully!");
    print("Account created for user: $username");
    
  } catch (e) {
    // TODO: Tangani pengecualian dan tampilkan pesan error
    print("Validation Error: $e");
    print("Account creation failed due to validation errors");
  }
}

// TODO: Tulis fungsi validasimu di sini
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