JavaScript Async #16: Error Handling di Async/Await

1. Kenapa Error Handling Penting?

Dalam proses asynchronous, banyak hal bisa gagal, seperti koneksi internet, server error, atau response yang tidak valid. Karena itu, error handling sangat penting.

2. try...catch pada async/await

async function getData() {
  try {
    const response = await fetch("https://jsonplaceholder.typicode.com/posts");
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error("Terjadi error:", error);
  }
}

3. finally

Kita juga bisa menambahkan blok finally untuk menjalankan kode penutup.

async function loadData() {
  try {
    console.log("Loading...");
  } catch (error) {
    console.error(error);
  } finally {
    console.log("Selesai");
  }
}

4. Validasi Response

Pada Fetch API, request yang gagal status HTTP-nya belum tentu langsung masuk catch. Karena itu, sering kali kita perlu mengecek response.ok.

async function getUsers() {
  try {
    const response = await fetch("/users");

    if (!response.ok) {
      throw new Error("Gagal mengambil data");
    }

    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error.message);
  }
}

5. Ringkasan

  • Gunakan try...catch untuk menangani error async/await
  • finally berguna untuk proses penutup
  • Cek response.ok saat memakai Fetch API

Di part berikutnya kita membahas concurrency dengan Promise.all, allSettled, dan race.