JavaScript - try...catch: Memahami Penanganan Error untuk Pemula

Hai, para pemrogram yang sedang belajar! Hari ini, kita akan melangsungkan sebuah perjalanan menarik ke dunia penanganan error dalam JavaScript. Jangan khawatir jika Anda baru belajar programming – saya akan memandu Anda di setiap langkah dengan banyak contoh dan penjelasan. Pada akhir tutorial ini, Anda akan bisa menangkap error seperti seorang ahli!

JavaScript - try...catch

Statement try...catch di JavaScript

Bayangkan Anda belajar menunggang sepeda. Anda mungkin akan jatuh beberapa kali, tetapi itu baik – Anda bangkit dan mencoba lagi. Dalam programming, kita menggunakan statement try...catch untuk melakukan hal yang sama. Kita "coba" menjalankan beberapa kode, dan jika ia "jatuh" (mengeluarkan error), kita "tangkap"nya dan menanganinya dengan mulus.

mari lihat contoh sederhana:

try {
// Kode yang mungkin menyebabkan error
console.log(nonExistentVariable);
} catch (error) {
// Kode untuk menangani error
console.log("Ups! Terjadi error:", error.message);
}

Dalam contoh ini, kita mencoba untuk mencetak variabel yang tidak ada. Sebaliknya terjadi kesalahan yang menghancurkan program kita, blok catch menangkap error dan mencetak pesan yang ramah.

Statement try...catch...finally di JavaScript

kadang-kadang, kita ingin menjalankan beberapa kode tanpa menghiraukan apakah terjadi error atau tidak. Itu adalah saat blok finally berguna. Itu seperti mengatakan, "Tidak peduli apa yang terjadi, pastikan melakukan ini!"

try {
console.log(" mari cobا untuk membagi nol!");
let result = 10 / 0;
console.log("Hasil:", result);
} catch (error) {
console.log("Oh no! Terjadi error:", error.message);
} finally {
console.log("Ini akan selalu dijalankan, error atau tidak!");
}

Dalam contoh ini, meskipun membagi nol menyebabkan error, blok finally tetap dieksekusi.

Statement Throw di JavaScript

kadang-kadang, kita ingin membuat error sendiri. Kita dapat melakukan ini menggunakan statement throw. Itu seperti menjadi wasit dalam sebuah permainan dan menyebutkan pelanggaran saat Anda melihatnya.

function checkAge(age) {
if (age < 0) {
throw new Error("Umur tidak bisa negatif!");
}
console.log("Umur valid:", age);
}

try {
checkAge(-5);
} catch (error) {
console.log("Menangkap error:", error.message);
}

Di sini, kita melempar error sendiri saat seseorang mencoba menggunakan umur negatif.

Menyusun Blok Try

Seperti menyusun boneka, kita dapat menyusun blok try...catch di dalam yang lain. Ini sangat berguna saat kita ingin menangani error di level yang berbeda dalam kode kita.

try {
try {
throw new Error("Ups!");
} catch (innerError) {
console.log("Inner catch:", innerError.message);
throw innerError; // Melempar error kembali
}
} catch (outerError) {
console.log("Outer catch:", outerError.message);
}

Dalam contoh ini, kita menangkap error di blok dalam, mencetaknya, dan kemudian melempar error kembali ke blok luar.

Melempar Error Kembali

kadang-kadang, kita ingin menangkap error, melakukan sesuatu dengannya, dan kemudian meneruskannya ke tempat lain untuk ditangani. Ini disebut melempar error kembali.

function doSomethingRisky() {
throw new Error("Bahaya, Will Robinson!");
}

try {
doSomethingRisky();
} catch (error) {
console.log("Mencatat error:", error.message);
throw error; // Melempar error kembali
}

Di sini, kita menangkap error, mencatatnya, dan kemudian melempar error kembali untuk ditangani oleh bagian lain dari kode kita.

Blok Catch Conditional

Dalam beberapa kasus, kita mungkin ingin menangani jenis error yang berbeda secara berbeda. Kita dapat melakukan ini dengan memeriksa jenis error di blok catch.

try {
let randomNumber = Math.random();
if (randomNumber < 0.5) {
throw new TypeError("Error tipe!");
} else {
throw new RangeError("Error rentang!");
}
} catch (error) {
if (error instanceof TypeError) {
console.log("Menangani TypeError:", error.message);
} else if (error instanceof RangeError) {
console.log("Menangani RangeError:", error.message);
} else {
console.log("Error tak diketahui:", error.message);
}
}

Contoh ini menunjukkan bagaimana kita dapat menangani jenis error yang berbeda dalam cara yang berbeda.

JavaScript try...catch dengan Metode setTimeout()

Saat bekerja dengan kode asinkron, penanganan error bisa sulit. mari lihat bagaimana menangani error dalam fungsi setTimeout().

try {
setTimeout(() => {
throw new Error("Error asinkron!");
}, 1000);
} catch (error) {
console.log("Ini tidak menangkap error!");
}

// Cara yang benar:
setTimeout(() => {
try {
throw new Error("Error asinkron!");
} catch (error) {
console.log("Menangkap error asinkron:", error.message);
}
}, 1000);

Upaya pertama tidak akan bekerja karena error dilempar setelah blok try...catch selesai dieksekusi. Upaya kedua menangkap error dengan benar.

Error Berdasarkan Promise

Saat bekerja dengan Promises, kita menggunakan .catch() untuk menangani error. Itu seperti blok catch, tapi untuk operasi asinkron.

function fetchData() {
return new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error("Gagal mengambil data"));
}, 1000);
});
}

fetchData()
.then(data => console.log("Data:", data))
.catch(error => console.log("Error:", error.message));

Dalam contoh ini, kita mensimulasikan kegagalan pengambilan data dan menangkap error yang timbul.

Jenis Error di JavaScript

JavaScript memiliki beberapa jenis error bawaan. Berikut adalah tabel yang menggabungkannya:

Jenis Error Deskripsi
Error Jenis error umum
SyntaxError Terjadi saat ada kesalahan sintaks di kode
ReferenceError Terjadi saat mengacu pada variabel yang tidak ada
TypeError Terjadi saat nilai bukan jenis yang diharapkan
RangeError Terjadi saat nilai bukan dalam rentang yang diharapkan
URIError Terjadi saat menggunakan fungsi penanganan URI global secara salah
EvalError Terjadi saat menggunakan fungsi eval() secara salah

Memahami jenis error ini dapat membantu Anda menulis kode penanganan error yang lebih tepat.

Dan itu saja! Anda telah menyelesaikan kursus penanganan error JavaScript. Ingat, error bukan musuh Anda – mereka adalah umpan balik berharga yang membantu Anda menulis kode yang lebih baik dan lebih kuat. Teruslatih, tetap ciek, dan kodingsenang!

Credits: Image by storyset