Bir söz tamamlandığında hata (reddetme) ile nasıl başa çıkıyorsun?
sobes.tech yapay zeka
AI'dan gelen yanıt
.catch() veya .finally() metodlarıyla işlem yapıyorum.
.catch() reddedilen promise'leri işlemek için kullanılır. Eğer promise başarıyla çözülürse, .catch() bloğu atlanır.
// Hata yönetimi `.catch()` ile
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed'); // Hata simülasyonu
}
return response.json();
})
.then(data => {
console.log('Veri alındı:', data);
})
.catch(error => {
console.error('Hata:', error); // Hata burada işlenir
});
.finally() ise, promise başarılı (fulfill) veya hata ile (reject) sonuçlansın, bağımsız olarak çalışır. Kaynakları temizlemek veya yükleme göstergelerini gizlemek için kullanışlıdır.
// `.finally()` kullanımı, promise tamamlandıktan sonra kod çalıştırmak için
fetch('/api/data')
.then(response => {
if (!response.ok) {
throw new Error('Request failed');
}
return response.json();
})
.then(data => {
console.log('Veri alındı:', data);
})
.catch(error => {
console.error('Hata:', error);
})
.finally(() => {
console.log('İstek tamamlandı.'); // Bu kod her zaman çalışır
});
Ayrıca, async fonksiyonları içinde try...catch yapısı kullanarak, promise'ler de dahil olmak üzere, asenkron işlemlerde hataları yakalayabilirim:
// `async/await` ile hata yönetimi, try...catch kullanarak
async function fetchData() {
try {
const response = await fetch('/api/data');
if (!response.ok) {
throw new Error('Request failed');
}
const data = await response.json();
console.log('Veri alındı:', data);
} catch (error) {
console.error('Hata:', error); // Hata burada işlenir
} finally {
console.log('Fetch işlemi tamamlandı.'); // Her zaman çalışır
}
}
fetchData();
Hangi yöntemin kullanılacağı, bağlama ve gereken hata işleme mantığına bağlıdır. .catch() temel hata tepkisi için kullanılırken, .finally() bağımsız olarak yapılacak işlemler içindir. try...catch ise, async fonksiyonlarda daha alışılmış ve senkronize bir hata işleme stilini sağlar.