Lompat ke konten utama

Kompetisi Ajak Teman: hadiah total Rp1.000.000 tunai untuk 3 pengajak terbanyak. Berakhir 29 November 2026. Ikut kompetisi

←

JavaScript Lanjutan

Pelajaran 14 dari 22

Error, JSON, dan tanggal

try, catch, throw, dan error kustom

Setelah pelajaran ini kamu bisa melempar error dengan throw, menangkapnya dengan try dan catch, dan membuat class error sendiri.

±13 menitDiperiksa 28 Sep 2026

Materi

Fungsi yang menerima masukan tidak sah punya dua pilihan: mengembalikan nilai khusus seperti null, atau menghentikan jalannya program dengan throw. throw new Error("pesan") menghentikan fungsi saat itu juga dan melompat ke blok catch terdekat di atasnya. Bila tidak ada catch sama sekali, program berhenti dan pesannya tampil di konsol.

Blok try berisi kode yang mungkin gagal. Blok catch (e) menerima objek error-nya, dengan property name (jenis error) dan message (pesannya). Blok finally selalu dijalankan setelah keduanya, baik ada error maupun tidak, sehingga dipakai untuk pekerjaan penutup seperti mematikan indikator memuat.

class SaldoKurangError extends Error {
  constructor(kurang) {
    super(`Saldo kurang Rp${kurang}`);
    this.name = "SaldoKurangError";
    this.kurang = kurang;
  }
}
function tarik(saldo, n) {
  if (n > saldo) throw new SaldoKurangError(n - saldo);
  return saldo - n;
}
try {
  tarik(50000, 80000);
} catch (e) {
  if (!(e instanceof SaldoKurangError)) throw e;
  console.log(e.name, e.kurang); // SaldoKurangError 30000
} finally {
  console.log("transaksi ditutup");
}

Error kustom dibuat dengan class yang mewarisi Error. Constructor-nya memanggil super dengan pesan, lalu mengisi this.name supaya jenisnya terbaca di konsol, dan boleh menambah property lain yang berguna bagi penangkapnya. Di catch, instanceof memisahkan error yang memang diharapkan dari kesalahan program lain. Error yang tidak dikenali dilempar ulang dengan throw e.

Latihan

0/3 lulus

Jawaban diperiksa di server. Lulus berarti kamu memahami contohnya, bukan penilaian seluruh pekerjaanmu.

Latihan 3 dari 3

Apa yang tercetak, berurutan, oleh kode ini? try { throw new TypeError("x"); } catch (e) { console.log(e.name); } finally { console.log("selesai"); }

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Luluskan semua latihan dulu untuk menandai pelajaran ini selesai.

Lanjutkan ke