Hata Nedir?
Node.js, bu hatayı aslında size uyarı olarak gösterse de, gelecekteki sürümlerde bu hata ciddi bir soruna dönüşebilir. Bu yüzden, hemen çözmeye başlamalıyız.
Neden Bu Hata Alınır?
Diyelim ki, bir API'ye istek atıyorsunuz ve bir hata meydana geliyor. Eğer bu hatayı ele almazsanız, işte bu hata karşınıza çıkacaktır.
Hata Nasıl Çözülür?
# 1. Promise Kullanırken `catch()` Kullanmak
Örnek:
const fetchData = () => {
return new Promise((resolve, reject) => {
const errorOccurred = true;
if (errorOccurred) {
reject("Veri alınırken bir hata oluştu");
} else {
resolve("Veri başarıyla alındı");
}
});
};
fetchData()
.then(result => {
console.log(result);
})
.catch(error => {
console.error("Hata:", error);
});
Yukarıdaki kodda, bir hata meydana geldiğinde, bu hata catch() metodu ile yakalanır ve konsola yazdırılır. Böylece Unhandled Promise Rejection hatasından kaçınmış oluruz.
# 2. Async-Await Kullanarak Hataları Ele Almak
Örnek:
const fetchData = async () => {
const errorOccurred = true;
if (errorOccurred) {
throw new Error("Veri alınırken bir hata oluştu");
}
return "Veri başarıyla alındı";
};
const getData = async () => {
try {
const result = await fetchData();
console.log(result);
} catch (error) {
console.error("Hata:", error.message);
}
};
getData();
Bu örnekte, fetchData() fonksiyonu throw komutu ile hata fırlatıyor ve try-catch bloğu bu hatayı yakalıyor.
# 3. Global Hata Yönetimi
Örnek:
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Rejection at:', promise, 'reason:', reason);
});
Bu yöntem, tüm projenizdeki Unhandled Promise Rejection hatalarını global olarak yakalamaya yarar. Ancak, bu çözüm yalnızca hataları dinlemek içindir; hataları düzgün bir şekilde yakalamak ve işlem yapmak için catch() veya try-catch kullanmanız gerekir.
# 4. Uyarıları Etkinleştirmek
Örneğin, aşağıdaki komutla uyarıları etkinleştirebilirsiniz:
node --unhandled-rejections=strict app.js
Bu komutla birlikte, Node.js size Unhandled Promise Rejection hatalarını sert bir şekilde uyaracaktır ve bu hataların uygulamanızı bozmasına engel olabilirsiniz.
Sonuç
Promise yönetimi, asenkron programlamanın bel kemiğidir. Bu yüzden hataları doğru yakalayarak, size sağlam bir temel sunacaktır. Hadi, projenizi güvenli ve sorunsuz bir şekilde geliştirmeye devam edin!