Cara Handle Error Express Js Secara Global

cara try catch express js - Pada kesempatan kali ini, saya akan sharing mengenai cara handle error di express node js secara global. Sebelumnya, saya akan menjelaskan terlebih dahulu tentang apa itu handle error di express js dan mengapa harus dilakukan secara global?

Middleware Express Js Handling Error

Express Js Tidak Mempunyai Program Handle Error Bawaan
Mungkin kalian juga pernah mengalami. Jika kita membuat sebuah program menggunakan express js dan ada masalah dalam program, maka express akan menampilkan error di console dan server otomatis dimatikan. Hal ini dikarenakan program hanya menampilkan error lewat console sehingga proses running server di console menjadi terganggu sementara client (pengakses web) sedang menunggu response diberikan oleh server yang mana sedang error, sehingga proses di client hanya menampilkan loading terus menerus. Otomatis, running server server akan terhenti.

Oleh karena itu, untuk menghindari hal tersebut, diperlukan handling error. Jika kita menerapkan model try catch di tiap route, mungkin kurang lebih kodenya menjadi begini.

app.get('/',(req,res)=>{
try {
function_asal(); // function tidak terdefinisi (akan error)
} catch (e) {
res.status(500).json({
status: false,
name: err.name,
message: err.message
});
}
});

Tetapi masalahnya kita harus membuat kode try catch secara terus menerus di setiap routes. Hal itu sangat membuat capek untuk melakukan sesuatu secara berulang ulang dan kode menjadi tidak clean. Nah, disinilah kita harus menerapkan handle error di express js secara global.

Handle secara global artinya program handle error kita berlaku untuk seluruh routes yang ada. Jadi kita hanya perlu menambah kode handle error sekali lalu membuat program routes seperti biasa.

Caranya adalah dengan menambah kode ajaib ini dibagian akhir routes.

app.use((err, req, res, next) => {
 res.status(500).json({
   status: false,
   name: err.name,
   message: err.message
 });
});

Contoh script secara keseluruhan adalah seperti ini.

app.get('/',(req,res)=>{
    function_asal(); // function tidak terdefinisi (akan error)
});
app.get('/home',(req,res)=>{
    res.send('Selamat datang'); // function terdefinisi (tidak error)
});

app.use((err, req, res, next) => {
 res.status(500).json({
   status: false,
   name: err.name,
   message: err.message
 });
});

Jika kita mengakses url dengan function yang tidak terdefinisi, maka program akan error. Tetapi karena kita sudah menambah kode handling errornya dibagian paling bawah, error tidak akan mematikan running server.
LihatTutupKomentar