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: İlkifkoşulu yanlışsa ve başka bir koşulu kontrol etmek istiyorsanız kullanılır. İstediğiniz kadarelse ifekleyebilirsiniz.else: Tümifveelse ifkoş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ğericasedeğeriyle eşleşiyorsa, o blok içindeki kod çalışır.break: Eşleşencasebulunduğunda ve kod çalıştırıldığında,switchbloğundan çıkılmasını sağlar. Bunu kullanmazsanız, eşleşencase'den sonraki tümcaseblokları da çalıştırılır (fall-through).default: Hiçbircaseile 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.
trybloğu: Hata oluşma ihtimali olan kodları bu bloğun içine yazarsınız.catchbloğu:trybloğu içinde bir hata meydana gelirse, kontrol hemen bu bloğa geçer.catchbloğu, hatayı yakalar ve hatayı temsil eden bir nesne (genellikleerrveyaerroradında) alır. Bu sayede hataya özel işlemler yapabilir, kullanıcıya bilgilendirici mesajlar gösterebilir veya loglayabilirsiniz.finallybloğu (İsteğe Bağlı): Hemtrybloğ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