Hata nedir, neden olur?
Bu hatayı görmenin en yaygın nedeni, `Promise`'in hatalı bir duruma düşüp, ona nasıl yaklaşılacağına dair hiçbir şey yapmamanızdır. Ve bu da ciddi sorunlara yol açabilir çünkü Node.js 15.0.0 sürümünden itibaren, bu hatalar ciddi şekilde uygulamanızda sorun yaratabilir.
Nasıl Çözülür?
```javascript
const myFunction = async () => {
const response = await fetchData(); // Burada fetchData() bir Promise döner
console.log(response);
};
myFunction();
```
Eğer `fetchData()` fonksiyonu beklediğiniz gibi çalışmazsa ve bir hata dönerse, bu hatayı yakalamazsanız "Unhandled Promise Rejection" hatası alırsınız.
Çözüm, çok basit: Her zaman bir `try-catch` bloğu kullanarak hataları yakalayın veya `catch()` metodu ile `Promise` üzerinde hataları yönetin.
# 1. `try-catch` Kullanımı
```javascript
const myFunction = async () => {
try {
const response = await fetchData(); // Burada fetchData() bir Promise döner
console.log(response);
} catch (error) {
console.error('Bir hata oluştu: ', error);
}
};
myFunction();
```
Bu şekilde, eğer `fetchData()` bir hata dönerse, `catch` bloğu devreye girer ve hatayı düzgün bir şekilde yakalar. Böylece "Unhandled Promise Rejection" hatası almazsınız.
# 2. `.catch()` Metodu Kullanımı
```javascript
fetchData()
.then(response => console.log(response))
.catch(error => console.error('Bir hata oluştu: ', error));
```
Bu yaklaşım, aynı şekilde hataları yakalar ve kodunuzu güvenli hale getirir.
Node.js Global Ayarları
```bash
node --unhandled-rejections=strict app.js
```
Bu komut, uygulamanızda herhangi bir `Promise` reddi yaşandığında Node.js’in sert bir şekilde hata vermesini sağlar. Bu, geliştirme aşamasında çok faydalıdır çünkü uygulamanızda gözden kaçan hataları hemen görürsünüz.
Diğer bir seçenek ise, Node.js’in bu hatayı sessizce geçmesini sağlamak:
```bash
node --unhandled-rejections=warn app.js
```
Bu seçenek, yalnızca hata uyarısı verir ama uygulamanın çalışmasına devam eder. Sonuç olarak, kodunuzu daha stabil ve hatasız bir hale getirebilirsiniz.
İyi Bir Uygulama İçin Hata Yönetimi
Sonuç
Unutmayın, her hata bir öğrenme fırsatıdır! Eğer bu hatayı düzgün bir şekilde yönetirseniz, Node.js uygulamanızın güvenliği ve stabilitesi artacaktır.