Temukan berbagai jenis kesalahan yang dapat Anda tangani, dan bagaimana Anda dapat menggunakan Express.js untuk mengatasinya.
Takeaway kunci
- Kesalahan dalam aplikasi Express.js dapat dikategorikan ke dalam kesalahan sintaksis dan runtime, validasi input dan kesalahan pengguna, kesalahan terkait basis data dan jaringan, serta kesalahan layanan dan API pihak ketiga.
- Menangkap dan mencatat error ke konsol adalah cara sederhana untuk menangani error selama fase pengembangan dan debugging di Express.js. Paket penanganan error seperti express-error-handler menyediakan fungsionalitas siap pakai untuk mengelola dan merespons error.
- Menangani error sinkron dan asinkron menggunakan blok try-catch adalah teknik yang efektif di Express.js. Untuk operasi asinkron, mengintegrasikan kata kunci async dan await dalam blok try-catch dapat meningkatkan penanganan kesalahan. Membuat middleware penanganan kesalahan khusus memungkinkan pendekatan terpusat dan disesuaikan untuk manajemen kesalahan.
Dalam skenario yang ideal, Anda membuat API dan layanan backend, menerapkannya ke produksi, lalu duduk dan bersantai sementara orang lain menggunakannya. Sayangnya, di dunia nyata, program yang Anda tulis hampir pasti mengandung kesalahan dan bug.
Untuk alasan ini, saat mengembangkan API Express.js dan layanan backend, penting untuk mempertimbangkan bagaimana kesalahan yang berbeda dapat terjadi dan cara menanganinya secara efektif.
Dengan mengantisipasi skenario seperti itu, Anda dapat memastikan bahwa aplikasi Anda tidak hanya menangani kegagalan secara efektif tetapi juga memberikan pengalaman yang mulus kepada pengguna.
Jenis Kesalahan Umum pada Aplikasi Express.js
Saat mengembangkan aplikasi Express.js, Anda akan menemui berbagai jenis error, antara lain:
- Kesalahan sintaksis dan runtime: Syntax error terjadi ketika ada kesalahan pada sintaks kode, artinya aplikasi tidak dapat berjalan. Kesalahan runtime, di sisi lain, terjadi saat program sedang berjalan, biasanya karena kondisi yang tidak terduga atau data yang salah.
- Validasi input dan kesalahan pengguna: Kesalahan ini terjadi saat pengguna memberikan data yang tidak memadai atau tidak valid selama interaksi dengan aplikasi. Kesalahan ini dapat bermanifestasi dalam berbagai bentuk, seperti bidang wajib yang hilang, format data yang salah, atau nilai yang tidak memenuhi kriteria tertentu.
- Kesalahan terkait database dan jaringan: Kesalahan terkait database dan jaringan dapat terjadi saat ada masalah saat menghubungkan ke database atau saat komunikasi dengan aplikasi eksternal melalui jaringan gagal. Kesalahan ini bisa sangat merepotkan jika aplikasi Anda bergantung pada jaringan untuk beroperasi.
- Kesalahan layanan dan API pihak ketiga: Kesalahan juga dapat muncul saat berinteraksi dengan API atau layanan eksternal. Saat mengajukan permintaan ke sistem eksternal, berbagai masalah mungkin muncul. Misalnya, API mungkin mengalami waktu henti, mengembalikan respons dengan kesalahan karena parameter yang tidak valid, atau mengembalikan format data yang tidak diharapkan.
Ada berbagai teknik yang dapat Anda gunakan untuk menangani kesalahan secara efektif di Express.js Anda API REST dan layanan backend.
1. Menangkap dan Mencatat Kesalahan ke Konsol
Cara mudah untuk menangani kesalahan adalah menangkapnya dan mencatat detailnya ke konsol. Pendekatan ini membantu Anda mengidentifikasi kesalahan selama fase pengembangan dan debugging.
Dengan menggunakan konsol.kesalahan(), Anda dapat memperoleh wawasan tentang sifat dan lokasi kesalahan dalam aplikasi Anda. Berikut adalah contoh kode:
app.get('/example', (req, res) => {
try {
// Code that may cause an error
const result = someFunction();
res.json(result);
} catch (error) {
console.error('Error occurred:', error);
res.status(500).json({ message: 'An error occurred.' });
}
});
2. Menggunakan Paket Penanganan Kesalahan
Express.js menawarkan beberapa paket middleware penanganan kesalahan untuk merampingkan manajemen kesalahan. Salah satu paket tersebut adalah express-error-handler—Paket-paket ini memudahkan untuk menangani dan merespons kesalahan dengan menyediakan fungsionalitas siap pakai, seperti pesan kesalahan khusus dan fitur log kesalahan.
Untuk menggunakan paket ini, Anda perlu menginstalnya di proyek Anda:
npm install express-error-handler
Setelah terinstal, Anda dapat menggunakan fitur-fiturnya untuk meningkatkan kemampuan penanganan kesalahan aplikasi Anda.
const errorHandler = require('express-error-handler');
// Register the error-handling middleware
app.use(errorHandler({
static: {
'404': 'path/to/404.html'
}
}));
Misalnya, dalam contoh di atas, misalkan pengguna meminta rute yang tidak ada. Fungsi penangan akan memicu dan mengarahkan pengguna ke halaman kesalahan 404 khusus, 404.html. Ini memastikan aplikasi Express.js secara efektif menangani kesalahan halaman tidak ditemukan.
Pada dasarnya, paket-paket ini memberikan pendekatan yang lebih ramah pengguna untuk mengelola kesalahan yang mungkin timbul.
3. Menangani Kesalahan Sinkron dan Asinkron Menggunakan Blok Coba-Tangkap
Penanganan pemrograman sinkron dan asinkron kesalahan menggunakan blok try-catch adalah teknik yang efektif di Express.js. Untuk kode sinkron, Anda dapat mengelola kesalahan dengan membungkus bagian yang berpotensi rawan kesalahan dalam blok try-catch.
Berikut adalah contoh kode yang menampilkan blok try-catch yang sedang digunakan:
app.get('/data', (req, res) => {
try {
// code that may cause an error
const result = someFunction();
res.json(result);
} catch (error) {
console.error('Error occurred:', error);
res.status(500).json({ message: 'An error occurred.' });
}
});
Namun, saat bekerja dengan operasi asinkron seperti kueri basis data atau menggunakan Axiosuntuk menggunakan API, blok try-catch saja mungkin tidak cukup. Dalam kasus tersebut, Anda sekarang dapat mengintegrasikan asinkron dan menunggu kata kunci dalam blok untuk menangani kesalahan dengan lebih efisien.
Berikut ini beberapa contoh kode:
app.get('/data', async (req, res) => {
try {
const data = await fetchDataFromDatabase();
res.json(data);
} catch (error) {
console.error('Async Error:', error);
res.status(500).json({ message: 'Error occurred fetching data.' });
}
});
4. Membuat Middleware Penanganan Kesalahan Khusus
Middleware penanganan kesalahan khusus memungkinkan Anda untuk menentukan bagaimana program Anda menangani kesalahan dan tanggapannya yang sesuai, sesuai dengan kebutuhan aplikasi Anda.
Dengan membuat fungsi middleware penanganan kesalahan, Anda dapat memusatkan dan menyesuaikan manajemen kesalahan, memastikan pendekatan yang lebih tertata dan disesuaikan untuk menangani kesalahan di seluruh aplikasi.
Berikut adalah contoh kode fungsi custom middleware:
// Custom middleware for handling not found errors
const notFoundHandler = (req, res, next) => {
const resource = req.params.resource;
if (resource 'users') {
return res.status(404).json({ message: 'User not found.' });
} elseif (resource 'products') {
return res.status(404).json({ message: 'Product not found.' });
} else {
return res.status(404).json({ message: 'Requested resource not found.' });
}
};
app.use('/api/:resource', notFoundHandler);
Dalam contoh ini, notFoundHandler fungsi memeriksa sumber parameter di URL permintaan. Bergantung pada nilai yang diberikan, fungsi penangan merespons dengan pesan kesalahan khusus untuk berbagai jenis sumber daya, seperti pengguna dan produk.
Untuk sumber daya lain yang tidak ditangani secara eksplisit, ini memberikan pesan kesalahan umum. Atau, dalam middleware ini, Anda juga dapat memilih untuk merutekan pengguna ke halaman kesalahan khusus yang membantu mereka tentang cara menyelesaikan masalah yang mereka temui.
Dengan menggunakan middleware penanganan kesalahan khusus ini, Anda dapat menyesuaikan manajemen kesalahan dan respons terhadap situasi yang berbeda, menjadikan penanganan kesalahan lebih spesifik dan informatif.
Dalam lingkungan produksi, sangat penting untuk mengimplementasikan error logging dan pemantauan untuk melacak kesalahan aplikasi. Beberapa alat efektif yang dapat Anda gunakan termasuk Winston Dan Morgan, diantara yang lain. Alat ini mencatat kesalahan ke file, server terpusat, atau platform pemantauan, memungkinkan Anda mengidentifikasi dan menyelesaikan masalah dengan cepat.
Berikut adalah contoh bagaimana Anda dapat menggunakan Winston di aplikasi Express.js untuk pencatatan kesalahan:
const winston = require('winston');
const expressWinston = require('express-winston');
app.use(expressWinston.errorLogger({
// Error logging middleware using Winston
}));
Manajemen Error di Aplikasi Backend
Menerapkan teknik manajemen kesalahan yang efisien dan prosedur fail-safe sangat penting dalam membangun aplikasi backend yang kuat.
Dalam aplikasi Express.js, penting untuk mengantisipasi, merencanakan, dan menerapkan teknik penanganan kesalahan yang efektif yang memungkinkan Anda mengidentifikasi, mengelola, dan merespons kesalahan dengan cepat. Ini akan menjamin pengalaman yang lebih andal dan ramah pengguna bagi pengguna Anda.