} -->
Exception handling adalah mekanisme untuk menangani error atau situasi tak terduga saat program berjalan. Dart menyediakan beberapa cara untuk menangani exception secara efektif.
Beberapa exception umum yang disediakan Dart:
try-catch-finally adalah blok kode yang digunakan untuk menangani exception. Blok try berisi kode yang mungkin akan menghasilkan exception, sedangkan blok catch menangani exception yang terjadi. Blok finally akan dieksekusi selalu, baik exception terjadi atau tidak. mirip dengan javascript.
void main() {
try {
var hasil = 10 ~/ 0; // Pembagian oleh nol
print(hasil);
} catch (e) {
print('Error: $e');
// Output: Error: IntegerDivisionByZeroException
} finally {
print('selesai');
}
}
try {
var list = [1, 2, 3];
print(list[5]); // Index out of range
} on RangeError {
print('Indeks melebihi batas!');
} catch (e) {
print('Error lain: $e');
}
Mendapatkan informasi detail tentang alur error
try {
// Kode berbahaya
} catch (e, stackTrace) {
print('Error: $e');
print('Stack trace: $stackTrace');
}
void cekUmur(int umur) {
if (umur < 18) {
throw FormatException('Umur tidak valid');
}
}
void main() {
try {
cekUmur(15);
} catch (e) {
print(e); // Output: FormatException: Umur tidak valid
}
}
Membuat exception kustom dengan class
class SaldoKurangException implements Exception {
final String message;
SaldoKurangException(this.message);
@override
String toString() => 'SaldoKurangException: $message';
}
void tarikSaldo(double saldo, double jumlah) {
if (jumlah > saldo) {
throw SaldoKurangException('Saldo tidak cukup!');
}
}
void main() {
try {
tarikSaldo(1000, 1500);
} catch (e) {
print(e); // Output: SaldoKurangException: Saldo tidak cukup!
}
}