Merhaba Webkolog Takipçileri!
Bugün JavaScript'in karar mekanizmalarına ve hatalarla nasıl başa çıkacağımıza odaklanacağız: karar ifadeleri ve try...catch
blokları. Kodunuzun dinamik olmasını, farklı durumlara göre farklı davranışlar sergilemesini ve beklenmedik sorunlar karşısında çökmemesini istiyorsanız, bu konuları iyi kavramanız şart. Hadi başlayalım!
1. Karar İfadeleri: Kodunuzun Akışını Yönetin
Karar ifadeleri, belirli koşullar sağlandığında veya sağlanmadığında farklı kod bloklarının çalıştırılmasını sağlar. Bu sayede programınız daha akıllı ve etkileşimli hale gelir.
if
, else if
, else
Yapısı
Bu yapı, en temel ve en sık kullanılan karar ifadesidir. Belirli bir koşulun doğru olup olmadığını kontrol eder.
if
: Belirtilen koşul doğru (true
) ise kod bloğunu çalıştırır.else if
: İlkif
koşulu yanlışsa ve başka bir koşulu kontrol etmek istiyorsanız kullanılır. İstediğiniz kadarelse if
ekleyebilirsiniz.else
: Tümif
veelse if
koşulları yanlışsa çalışacak olan kod bloğudur.
let saat = 14;
if (saat < 12) {
console.log("Günaydın!");
} else if (saat < 18) {
console.log("İyi günler!");
} else {
console.log("İyi akşamlar!");
}
// Çıktı: "İyi günler!"
Ternary (Koşul) Operatörü ?:
Kısa ve tek satırlık if...else
yapıları için pratik bir alternatiftir. Söz dizimi şöyledir: koşul ? doğru ise çalışacak : yanlış ise çalışacak;
let yas = 20;
let oyKullanmaDurumu = (yas >= 18) ? "Oy kullanabilir." : "Oy kullanamaz.";
console.log(oyKullanmaDurumu); // Çıktı: "Oy kullanabilir."
switch
İfadesi
Çok sayıda farklı koşulu kontrol etmeniz gerektiğinde switch
ifadesi, birden fazla if...else if
zincirine göre daha okunaklı ve düzenli bir alternatif sunar. Bir değişkenin değerini farklı case
değerleriyle karşılaştırır.
case
: Eğer değişkenin değericase
değeriyle eşleşiyorsa, o blok içindeki kod çalışır.break
: Eşleşencase
bulunduğunda ve kod çalıştırıldığında,switch
bloğundan çıkılmasını sağlar. Bunu kullanmazsanız, eşleşencase
'den sonraki tümcase
blokları da çalıştırılır (fall-through).default
: Hiçbircase
ile eşleşme olmazsa çalışacak olan bloktur. (İsteğe bağlıdır.)
let gunNo = 3;
let gunAdi;
switch (gunNo) {
case 1:
gunAdi = "Pazartesi";
break;
case 2:
gunAdi = "Salı";
break;
case 3:
gunAdi = "Çarşamba";
break;
case 4:
gunAdi = "Perşembe";
break;
case 5:
gunAdi = "Cuma";
break;
case 6:
case 7: // Birden fazla case aynı kodu çalıştırabilir
gunAdi = "Hafta Sonu";
break;
default:
gunAdi = "Geçersiz Gün";
}
console.log(gunAdi); // Çıktı: "Çarşamba"
2. Hata Yönetimi: try...catch...finally
Blokları
Yazılım geliştirirken hatalarla karşılaşmak kaçınılmazdır. Kullanıcıların hatalı girişleri, ağ sorunları, beklenmeyen sunucu yanıtları gibi birçok durum programınızın çökmesine neden olabilir. try...catch
blokları, bu tür hataları zarif bir şekilde yönetmenizi ve uygulamanızın kesintiye uğramadan çalışmaya devam etmesini sağlar.
try
bloğu: Hata oluşma ihtimali olan kodları bu bloğun içine yazarsınız.catch
bloğu:try
bloğu içinde bir hata meydana gelirse, kontrol hemen bu bloğa geçer.catch
bloğu, hatayı yakalar ve hatayı temsil eden bir nesne (genellikleerr
veyaerror
adında) alır. Bu sayede hataya özel işlemler yapabilir, kullanıcıya bilgilendirici mesajlar gösterebilir veya loglayabilirsiniz.finally
bloğu (İsteğe Bağlı): Hemtry
bloğu başarılı olsa da hem de bir hata yakalandığında, her durumda çalıştırılması gereken kodlar bu bloğa yazılır. Örneğin, açılan bir dosya bağlantısını kapatmak veya bir veritabanı bağlantısını sonlandırmak gibi temizlik işlemleri için idealdir.
try {
// Hata çıkarabilecek kod buraya yazılır
let sayi1 = 10;
let sayi2 = "abc";
let sonuc = sayi1 / sayi2; // Bu satırda hata oluşacak (NaN)
// Eğer yukarıdaki satırda kritik bir hata olursa, buraya ulaşılmaz
console.log("İşlem başarılı: " + sonuc);
} catch (hata) {
// Hata oluşursa bu blok çalışır
console.error("Bir hata oluştu: " + hata.message); // Hata mesajını yazdır
// Hatanın türüne göre farklı işlemler yapabiliriz
if (hata instanceof TypeError) {
console.log("Tip hatası meydana geldi.");
} else if (hata instanceof ReferenceError) {
console.log("Tanımlanmamış değişkene erişim hatası.");
} else {
console.log("Beklenmedik bir hata.");
}
} finally {
// Hata oluşsa da oluşmasa da bu blok her zaman çalışır
console.log("İşlem tamamlandı, temizlik yapılıyor.");
}
Yukarıdaki örnekte sayi1 / sayi2
işlemi NaN
(Not-a-Number) sonucunu üretir, bu bir hata olarak kabul edilmez. Ancak, eğer sayi2
tanımlı olmasaydı veya başka bir türde daha ciddi bir hata olsaydı (örneğin throw
ile fırlatılan bir hata), catch
bloğu devreye girerdi.
Hata Fırlatma (throw
)
Bazen kendi özel hatalarınızı oluşturmak veya belirli bir koşulun sağlanmaması durumunda program akışını kesmek isteyebilirsiniz. throw
anahtar kelimesi ile kendi hatalarınızı fırlatabilirsiniz.
function yasKontrol(yas) {
if (yas < 0) {
throw new Error("Yaş negatif olamaz!"); // Hata nesnesi fırlatıyoruz
} else if (yas < 18) {
throw "Yaşınız 18'den küçük!"; // Basit bir string de fırlatılabilir
}
return "Yaş uygun.";
}
try {
console.log(yasKontrol(25)); // "Yaş uygun."
// console.log(yasKontrol(-5)); // Hata fırlatır ve catch'e düşer
console.log(yasKontrol(15)); // Hata fırlatır ve catch'e düşer
} catch (err) {
console.error("Hata yakalandı:", err);
if (err.message === "Yaş negatif olamaz!") {
alert("Lütfen geçerli bir yaş girin.");
} else if (err === "Yaşınız 18'den küçük!") {
alert("Maalesef yaşınız yetersiz.");
}
}
Sonuç
JavaScript'te karar ifadeleri (if/else
, switch
, ternary operatörü) ve hata yönetimi mekanizmaları (try...catch...finally
), daha sağlam, esnek ve kullanıcı dostu uygulamalar geliştirmenizin anahtarıdır. Koşullara göre farklı davranışlar sergileyebilmek ve beklenmedik durumlarla başa çıkabilmek, profesyonel bir yazılımcının en önemli becerilerindendir.
Bu konuları pratik yaparak pekiştirmenizi şiddetle tavsiye ederim. Bol bol deneme yapın, farklı senaryoları düşünün ve kodunuzu hatalara karşı dayanıklı hale getirin!
Webkolog'u takipte kalın!
Hepinize hatasız ve başarılı kodlama deneyimleri dilerim!
0 yorum:
Yorum Gönder