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.
Tantangan
MudahBuat 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.
- Baca input string yang mewakili nama pengguna
- Baca input string yang mewakili alamat email
- Baca input string yang mewakili usia dalam bentuk string
- Baca input string yang mewakili kata sandi
- Buat fungsi bernama
validateUsernameyang 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" - Buat fungsi bernama
validateEmailyang 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" - Buat fungsi bernama
validateAgeyang 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" - Buat fungsi bernama
validatePasswordyang 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" - Panggil setiap fungsi validasi secara berurutan dan tangani exception yang terjadi
- 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: johnJika 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 errorsJika 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 errorsProgrammu 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 siniPelajaran 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