Yükleniyor...

Hata Yönetimi

Node.js’de hata yönetimi, uygulamaların çalışması sırasında ortaya çıkan hataları tespit etmek, yakalamak ve uygun şekilde ele almak için kullanılan teknikler ve stratejiler bütünüdür. Hata yönetimi, özellikle Node.js’in asenkron ve olay tabanlı yapısı göz önünde bulundurulduğunda kritik bir öneme sahiptir. Kontrol edilmeyen hatalar, uygulamanın çökmesine, bellek sızıntılarına ve güvenlik açıklarına yol açabilir.
Node.js geliştirme sürecinde hata yönetimi, hem senkron hem de asenkron işlemlerde uygulanır. Senkron kodlarda try/catch blokları, asenkron kodlarda ise Promises, async/await ve catch() metodları kullanılarak hatalar yakalanabilir. Ayrıca EventEmitter, hata olaylarını merkezi olarak yönetmeye olanak tanır ve uygulamanın dayanıklılığını artırır. Node.js’in temel kavramları olan sözdizimi (syntax), veri yapıları, algoritmalar ve OOP prensipleri, güçlü ve etkin bir hata yönetimi için gereklidir.
Bu eğitimde, yaygın hata senaryolarını tanıyacak, giriş verilerini doğrulamayı, loglama yapmayı ve beklenmedik hatalara karşı uygulamanızı korumayı öğreneceksiniz. Ayrıca bellek sızıntılarını önleme ve performans optimizasyonu gibi ileri düzey teknikler ele alınacaktır. Eğitim sonunda, Node.js projelerinde hata yönetimini etkin şekilde uygulayarak uygulamanın güvenilirliğini, performansını ve sürdürülebilirliğini artırabileceksiniz.

Temel Örnek

text
TEXT Code
const fs = require('fs');

function dosyaOkuGüvenli(ruta) {
try {
const veri = fs.readFileSync(ruta, 'utf8');
console.log('Dosya başarıyla okundu:');
console.log(veri);
} catch (hata) {
console.error('Dosya okuma hatası:', hata.message);
}
}

dosyaOkuGüvenli('./ornek.txt');

Bu temel örnekte, fs modülü kullanılarak bir dosya senkron olarak okunmaktadır. dosyaOkuGüvenli fonksiyonu, dosya okuma işlemini try/catch bloğu içine alarak hataları yakalar. Örneğin, dosya bulunamadığında veya erişim izni yoksa hata yakalanır ve console.error ile loglanır.
Bu örnek, Node.js’de hata yönetiminin temel kavramlarını göstermektedir: doğru sözdizimi, basit veri yapıları kullanımı ve senkron işlemlerde hata kontrolü. Gerçek projelerde, bu yaklaşım uygulamanın kararlılığını artırmak ve beklenmedik çökme durumlarını önlemek için temel bir yapı taşını oluşturur.

Pratik Örnek

text
TEXT Code
class Veritabani {
constructor() {
this.kayitlar = [];
}

kayitEkle(kayit) {
if (!kayit.id || !kayit.isim) {
throw new Error('Geçersiz kayıt: id ve isim zorunludur');
}
this.kayitlar.push(kayit);
}

kayitAraById(id) {
return new Promise((resolve, reject) => {
setTimeout(() => {
const kayit = this.kayitlar.find(k => k.id === id);
if (kayit) resolve(kayit);
else reject(new Error('Kayıt bulunamadı'));
}, 1000);
});
}

}

(async () => {
const db = new Veritabani();
try {
db.kayitEkle({ id: 1, isim: 'Ahmet' });
const kayit = await db.kayitAraById(1);
console.log('Kayıt bulundu:', kayit);
await db.kayitAraById(2);
} catch (hata) {
console.error('Veritabanı hatası:', hata.message);
}
})();

Bu ileri düzey örnek, nesne yönelimli programlama ve asenkron işlemleri bir araya getirir. Veritabani sınıfı, kaydı eklemeden önce doğrulama yapar ve geçersiz kayıt durumunda hata fırlatır. kayitAraById metodu, Promise döndürerek asenkron hata yönetimini sağlar. async/await ve try/catch kullanımı, hem senkron hem de asenkron hataları tek bir merkezden yakalamayı mümkün kılar.
Bu örnek, veri doğrulama, arama algoritmaları ve hata yönetimi kavramlarını birleştirerek gerçek dünya uygulamalarında kullanılabilir, kodun okunabilirliğini ve sürdürülebilirliğini artırır.

Node.js’de hata yönetimi için en iyi uygulamalar arasında senkron işlemler için try/catch kullanmak, asenkron işlemler için Promises ve async/await ile hata yakalamak, verileri işlemden önce doğrulamak ve hata yönetimini iş mantığından ayrı tutmak yer alır. Üretimde loglama için Winston veya Bunyan gibi araçlar kullanılabilir.
Yaygın hatalar: Promise reddedilmelerini göz ardı etmek, callbacklerde hataları yönetmemek ve verimsiz algoritmalar kullanmak. Node.js Inspector ve console.trace ile hataların kaynağı hızlıca bulunabilir. Performans optimizasyonu için gereksiz I/O işlemleri azaltılmalı, bellek sızıntıları önlenmeli ve hata mesajlarında hassas bilgiler gösterilmemelidir.

📊 Referans Tablosu

Node.js Element/Concept Description Usage Example
try/catch Senkron hataları yakalar try { fs.readFileSync('dosya.txt'); } catch(e) { console.error(e); }
Promise Rejection Asenkron hataları yakalar fetchData().then(d => {}).catch(err => console.error(err));
async/await Asenkron hata yönetimi async function f(){ try { await fetchData(); } catch(e){ console.error(e); } }
EventEmitter Hata olaylarını merkezi yönetim emitter.on('error', err => console.error(err));

Etkili hata yönetimi, Node.js uygulamalarının güvenliğini, kararlılığını ve performansını artırır. Senkron ve asenkron hataların yakalanması, veri doğrulama ve algoritma optimizasyonu, kodun güvenilirliğini ve sürdürülebilirliğini güçlendirir. Sonraki adım olarak, bellek yönetimi, olay tabanlı desenler ve uygulama izleme konularını öğrenmek, hata yönetimi becerilerinizi daha da pekiştirecektir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek