Unhandled Promise Rejection Hatası Nedir?
Ancak, bir Promise işlemi başarısız olduğunda, bu hatayı düzgün bir şekilde yakalamazsanız, Node.js "Unhandled Promise Rejection" hatası ile sizi uyarır. Bu, basitçe şunu demek: Promise'inizde bir hata oluştu ama onu yakalamadınız, yani hatayı işleyemediniz!
Bir örnek üzerinden gidelim. Diyelim ki, API'den veri çekmeye çalışıyorsunuz, fakat bir hata meydana geliyor. Eğer bu hatayı doğru şekilde ele almazsanız, Node.js bu hatayı size bildirir.
Hata Nasıl Görünür?
```
(node:12345) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: API bağlantısı başarısız
```
Bu hatanın anlamı, Node.js'in bir Promise'in reddedildiğini fark ettiği fakat bu reddedilen Promise'i hiçbir şekilde ele almadığını belirtmesidir. Kısacası, bir hatayı görmezden geliyorsunuz.
Hata Nasıl Çözülür?
# 1. Hata Yönetimini Ekleme
```js
const fetchData = new Promise((resolve, reject) => {
// Bazı işlemler...
reject("API bağlantısı başarısız");
});
fetchData
.then(data => console.log(data))
.catch(err => console.error("Hata: " + err)); // Hata burada yakalanır
```
Burada `catch()` kullanarak, Promise'in reddedilmesi durumunda hata mesajını yakaladık ve çıktıya yazdırdık. Böylece, Node.js size bu hatayı bildirmiyor çünkü biz onu düzgün bir şekilde yakaladık.
# 2. async/await ile Hata Yönetimi
```js
const fetchData = async () => {
try {
let response = await someAsyncFunction();
console.log(response);
} catch (err) {
console.error("Hata: " + err); // Hata burada yakalanır
}
};
fetchData();
```
Burada `try...catch` bloğunu kullanarak, hata oluştuğunda onu yakalıyoruz. Bu şekilde asenkron işlemlerdeki hataları daha kolay yönetebilirsiniz.
# 3. Global Hata Yöneticisi Kullanma
```js
process.on('unhandledRejection', (reason, promise) => {
console.error('Unhandled Promise Rejection:', reason);
// Burada istediğiniz işlemi yapabilirsiniz (örn. uygulama kapatılabilir)
process.exit(1);
});
```
Bu kod, herhangi bir yerde unhandled Promise rejection meydana geldiğinde devreye girer ve hatayı loglar. Bu sayede programınızın çökmesini engelleyebilir ve hata ile ilgili daha fazla bilgi alabilirsiniz.
Node.js'in Yeni Davranışını Anlama
Sonuç
Unutmayın, hata yönetimi sadece yazılım geliştirme sürecinin değil, aynı zamanda profesyonel yazılımcı olmanın da bir parçasıdır!