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

Hai, para pemrogram yang sedang mencari tahu! Hari ini, kita akan memulai perjalanan menarik ke dunia penanganan kesalahan di JavaScript. Jangan khawatir jika Anda masih pemula di bidang pemrograman - saya akan memandu Anda di setiap langkah dengan banyak contoh dan penjelasan. Pada akhir tutorial ini, Anda akan dapat menangkap kesalahan seperti seorang ahli!

JavaScript - try...catch

Statement JavaScript try...catch

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

mari lihat contoh sederhana:

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

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

Statement JavaScript try...catch...finally

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

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

Dalam contoh ini, meskipun pembagian dengan nol menyebabkan kesalahan, blok finally tetap dieksekusi.

Statement JavaScript Throw

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

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

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

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

Menyusun Blok Try

Seperti menyusun boneka, kita dapat menyusun blok try...catch di dalam yang lain. Hal ini berguna saat kita ingin menangani kesalahan di tingkat yang berbeda dalam kode kita.

try {
try {
throw new Error("Ups!");
} catch (innerError) {
console.log("Tangkap dalam:", innerError.message);
throw innerError; // Melempar kembali kesalahan
}
} catch (outerError) {
console.log("Tangkap luar:", outerError.message);
}

Dalam contoh ini, kita menangkap kesalahan di blok dalam, mencetaknya, dan kemudian melempar kembali untuk ditangkap oleh blok luar.

Melempar Kembali Kesalahan

kadang-kadang, kita ingin menangkap kesalahan, melakukan sesuatu dengannya, dan kemudian meneruskan ke tempat lain untuk ditangani. Hal ini disebut melempar kembali kesalahan.

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

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

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

Blok Catch Bersyarat

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

try {
let randomNumber = Math.random();
if (randomNumber < 0.5) {
throw new TypeError("Kesalahan tipe!");
} else {
throw new RangeError("Kesalahan 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("Kesalahan tak dikenal:", error.message);
}
}

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

JavaScript try...catch dengan Metode setTimeout()

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

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

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

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

Kesalahan Berbasis Promise

Saat bekerja dengan Promise, kita menggunakan .catch() untuk menangani kesalahan. 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("Kesalahan:", error.message));

Dalam contoh ini, kita mensimulasikan pengecualian pengambilan data dan menangkap kesalahan yang timbul.

Jenis Kesalahan di JavaScript

JavaScript memiliki beberapa jenis kesalahan bawaan. Berikut adalah tabel yang menggabungkan mereka:

Jenis Kesalahan Deskripsi
Error Jenis kesalahan umum
SyntaxError Terjadi saat ada kesalahan sintaks di kode
ReferenceError Terjadi saat merujuk variabel yang tidak ada
TypeError Terjadi saat nilai bukan jenis yang diharapkan
RangeError Terjadi saat nilai tidak berada dalam rentang yang diharapkan
URIError Terjadi saat menggunakan fungsi pengobatan URI secara salah
EvalError Terjadi saat menggunakan fungsi eval() secara salah

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

Dan itu saja! Anda telah menyelesaikan kursus cepat dalam penanganan kesalahan JavaScript. Ingat, kesalahan bukan musuh Anda - mereka adalah umpan balik berharga yang membantu Anda menulis kode yang lebih baik dan lebih kuat. Teruslatih, tetap curiga, dan selamat pemrograman!

Credits: Image by storyset