Penanganan Kesalahan di TypeScript
Artikel ini menjelaskan tentang penanganan kesalahan di TypeScript.
YouTube Video
Penanganan Kesalahan di TypeScript
Penanganan kesalahan di TypeScript pada dasarnya dilakukan menggunakan konstruksi try...catch
, seperti pada JavaScript. Di TypeScript, dimungkinkan untuk mengelola konten kesalahan dengan lebih jelas melalui penafsiran tipe. Hal ini memungkinkan penanganan kesalahan yang lebih tepat dan mudah dibaca.
Sintaks try...catch
Sintaks dasar untuk penanganan kesalahan adalah sebagai berikut:.
1try {
2 // Code that may throw an error
3 throw new Error("Something went wrong!");
4} catch (error) {
5 // Catch and handle the error
6 console.error("Error:", error);
7} finally {
8 // Code that runs regardless of whether an error occurred
9 console.log("Finally block executed.");
10}
Penanganan Kesalahan dengan Tipe Aman
Di TypeScript, kesalahan yang tertangkap dalam blok catch
dianggap sebagai tipe any
, tetapi disarankan untuk menentukan tipe yang sesuai untuk penanganan kesalahan yang lebih aman. Sebagai contoh, Anda dapat mendefinisikan dan menggunakan tipe kesalahan khusus seperti berikut:.
1class CustomError extends Error {
2 constructor(message: string, public errorCode: number) {
3 super(message);
4 this.name = "CustomError";
5 }
6}
7
8try {
9 throw new CustomError("Invalid operation", 400);
10} catch (error) {
11 if (error instanceof CustomError) {
12 console.error(`Error: ${error.message}, Code: ${error.errorCode}`);
13 } else {
14 console.error("Unknown error occurred");
15 }
16}
Dalam contoh ini, sebuah kelas bernama CustomError
dibuat, dan sebuah error dilemparkan dengan properti khusus seperti errorCode
. Di blok catch
, gunakan instanceof
untuk menentukan tipe kesalahan dan melakukan penanganan yang sesuai.
Penanganan Kesalahan Asinkron
Di TypeScript, try...catch
juga digunakan untuk menangani error saat menggunakan fungsi asinkron.
1async function fetchData() {
2 try {
3 const response = await fetch("https://api.example.com/data");
4 if (!response.ok) {
5 throw new Error(`HTTP error! status: ${response.status}`);
6 }
7 const data = await response.json();
8 console.log(data);
9 } catch (error) {
10 console.error("Failed to fetch data:", error);
11 }
12}
13
14fetchData();
Dalam contoh ini, data diambil menggunakan fetch
, dan response.ok
diperiksa untuk melempar kesalahan jika kode status tidak OK. Kesalahan ditangkap di catch
, dan log yang sesuai dikeluarkan.
Ringkasan
Di TypeScript, menggunakan tipe untuk memperjelas konten kesalahan membuat penanganan kesalahan menjadi lebih aman dan mudah dibaca. Saat menangani kesalahan, penting untuk memperjelas jenis-jenis kesalahan yang mungkin terjadi dan menangani mereka dengan sesuai.
Kesalahan
Kelas Error
di TypeScript memperluas kelas Error
dalam JavaScript dan merupakan objek dasar untuk merepresentasikan kesalahan. Dengan menggunakan kelas Error
, Anda dapat membuat objek yang mencakup pesan kesalahan dan melakukan penanganan kesalahan.
Dasar-dasar Kelas Error
Kelas Error
digunakan sebagai berikut.
1const error = new Error("Something went wrong!");
2console.log(error.message); // "Something went wrong!"
3console.log(error.name); // "Error"
Properti
Kelas Error
memiliki properti berikut:.
- pesan Sebuah string yang mewakili pesan error.
- nama
Nama dari error. Secara default, nilainya adalah
"Error"
, tetapi dapat diubah dengan membuat kelas kesalahan khusus. - stack Informasi jejak stack yang digunakan untuk debugging. Sebuah string yang menunjukkan kode mana yang menyebabkan kesalahan terjadi.
Kelas Kesalahan Khusus
Anda juga dapat memperluas kelas Error
dan membuat kelas kesalahan Anda sendiri. Ini berguna dalam situasi di mana penanganan kesalahan tertentu diperlukan. Sebagai contoh, ini efektif ketika Anda ingin menangani berbagai jenis kesalahan seperti kesalahan permintaan HTTP atau kesalahan basis data.
Contoh Pembuatan Kesalahan Khusus
1class CustomError extends Error {
2 constructor(message: string, public errorCode: number) {
3 super(message); // Call the constructor of the parent class 'Error'
4 this.name = "CustomError"; // Set the name of the error
5 }
6}
7
8const customError = new CustomError("Invalid operation", 400);
9console.log(customError.message); // "Invalid operation"
10console.log(customError.name); // "CustomError"
11console.log(customError.errorCode); // 400
- Dengan membuat kelas
CustomError
dan menambahkan informasi seperti kode kesalahan, Anda dapat mengelola informasi yang lebih komprehensif tentang kesalahan.
Pewarisan Kelas Error
Dalam TypeScript, ketika membuat kelas kesalahan khusus dengan memperluas kelas Error
, ada beberapa hal yang perlu diperhatikan.
-
Memanggil
super()
Di konstruktor kelas error kustom, Anda harus memanggilsuper()
untuk memanggil konstruktor dari kelasError
. Ini memastikan bahwa propertimessage
danstack
diinisialisasi dengan benar. -
Menambahkan Properti Jika Anda ingin menambahkan informasi tambahan pada objek error, definisikan properti baru di dalam kelas. Sebagai contoh, dalam
CustomError
di atas, sebuah propertierrorCode
ditambahkan.
Melempar dan Menangkap Kesalahan
Anda dapat menangani error dengan melempar error menggunakan kelas Error
atau kelas error kustom, lalu menanganinya dengan catch.
1function riskyOperation() {
2 throw new Error("Something went wrong during the operation");
3}
4
5try {
6 riskyOperation();
7} catch (error) {
8 if (error instanceof Error) {
9 console.error(error.message); // "Something went wrong during the operation"
10 console.error(error.name); // "Error"
11 }
12}
Dalam kasus kesalahan khusus juga, gunakan instanceof
untuk mengidentifikasi kesalahan tertentu dan menangani mereka dengan tepat.
1class CustomError extends Error {
2 constructor(message: string, public errorCode: number) {
3 super(message);
4 this.name = "CustomError";
5 }
6}
7
8try {
9 throw new CustomError("Database connection failed", 500);
10} catch (error) {
11 if (error instanceof CustomError) {
12 console.error(`Error: ${error.message}, Code: ${error.errorCode}`);
13 }
14}
Ringkasan
Kelas Error
dalam TypeScript adalah kelas dasar untuk melakukan penanganan kesalahan standar. Selain itu, dengan memperluas kelas Error
untuk membuat kesalahan khusus, penanganan kesalahan yang fleksibel berdasarkan jenis kesalahan dan informasi tambahan menjadi mungkin.
Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.