Lompat ke konten utama
←

JavaScript Lanjutan

Pelajaran 24 dari 25

Iterator, generator, dan kode asinkron

Fetch: status 404, 500, dan galat jaringan

Setelah pelajaran ini kamu bisa membedakan jawaban galat HTTP dari kegagalan jaringan, memeriksa response.ok sebelum membaca badan, dan menerjemahkan 404, 5xx, serta jaringan putus menjadi pesan yang berbeda.

  • ±13 menit
  • 3 latihan
  • Diperiksa 28 Okt 2026

Latihan di pelajaran ini butuh akun gratis. Progres, kode, dan catatanmu hanya tersimpan di browser ini. Masuk untuk menyimpannya

Materi

Promise dari fetch hanya ditolak bila permintaannya gagal, misalnya karena jaringan putus atau alamatnya rusak; penolakannya berupa TypeError. Jawaban berstatus 404 atau 500 tetap sebuah jawaban, jadi Promise-nya fulfilled. MDN menegaskan fetch tidak menolak Promise untuk status galat HTTP.

const res = await fetch("/api/stok/K9");
res.ok;     // false
res.status; // 404 — Promise tetap fulfilled

try {
  await fetch("https://server-mati.example/api");
} catch (e) {
  e.name;   // "TypeError": gagal di tingkat jaringan
}

Penanda keberhasilan ada di response.ok, yang true hanya untuk status 200 sampai 299, dan angkanya di response.status. Periksa ok sebelum membaca badan. Badan jawaban galat belum tentu JSON; halaman galat sering berupa HTML, dan json() melempar SyntaxError bila badannya tidak bisa diurai sebagai JSON. Pesan SyntaxError seperti itu menyesatkan, karena masalah sebenarnya adalah statusnya.

Tiga keadaan itu butuh pesan berbeda untuk pengguna. 404 berarti yang dicari memang tidak ada, jadi mengulang permintaan tidak menolong. Status 5xx berarti server sedang bermasalah dan pengguna bisa mencoba lagi nanti. TypeError dari fetch berarti permintaannya tidak sampai, jadi yang diperiksa koneksinya.

Latihan

0/3 lulus

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

Latihan 3 dari 3

Kode memanggil await fetch("/api/stok/K9"), dan server menjawab dengan status 404. Apa yang terjadi pada Promise dari fetch?

Pilih satu jawaban

Catatanmu

Memuat catatan…

tersimpan otomatis, ikut tercetak · 0/4.000

Lanjutkan ke