Menu
CoddyTech

Özel İstisnalar

Coddy'nin C# Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 29 / 66.

Özel istisnalar, uygulamanıza özgü hata senaryoları için belirli istisna türleri oluşturmanıza olanak tanır.

Özel bir istisna oluşturmak için Exception sınıfından kalıtım alan bir sınıf tanımlayın. Kalıtım, yeni sınıfınızın üst sınıfın tüm davranışlarını (bu durumda Exception) otomatik olarak devralması ve işlevsellik eklemenize veya özelleştirmenize olanak tanıması anlamına gelir. class MyException : Exception söz dizimi, MyException, Exception sınıfını genişletir anlamına gelir.

public class InvalidAgeException : Exception
{
    public InvalidAgeException() : base("Age is not valid.")
    {
    }
    
    public InvalidAgeException(string message) : base(message)
    {
    }
}

: Exception: yerleşik Exception sınıfından kalıtım alır.
: base(...): hata mesajını ayarlamak için üst sınıfın Exception kurucusunu çağırır.
İlk kurucu, herhangi bir mesaj verilmediğinde varsayılan bir mesaj sağlar.
İkinci kurucu, çağıranların hatayı ayrıntılı biçimde açıklayabilmesi için özel bir mesaj alır.

Artık gerektiğinde özel istisnanızı fırlatabilirsiniz:

int age = -5;
if (age < 0)
{
    throw new InvalidAgeException("Age cannot be negative.");
}

Bu kod negatif bir yaşla çalıştırıldığında, "Age cannot be negative." mesajıyla özel istisnanızı fırlatır.

Not: Bu dersin alıştırmalarında doğrulama işlevleri, girdi geçerliyse true döndürür ve geçerli değilse özel bir istisna fırlatır. Yakalanmayan bir istisna yürütmeyi hemen durdurduğundan, test durumlarının yalnızca true dönüş yolunu doğrulaması yeterlidir: geçersiz girdiler için gözlemlenebilir sonuç istisnanın kendisidir.

challenge icon

Görev

Orta

Exception sınıfından türeyen, InvalidTemperatureException adlı özel bir istisna sınıfı oluştur. Şunlara sahip olmalı:

  1. "Temperature is not valid." mesajını ayarlayan varsayılan bir yapıcı
  2. Özel bir mesaj kabul eden bir yapıcı

Ardından, checkTemperature adlı şu yöntemi uygula:

  • Celsius cinsinden bir sıcaklığı temsil eden tamsayı parametre alır
  • Sıcaklık -273'ten düşükse "Temperature below absolute zero!" mesajıyla bir InvalidTemperatureException fırlatır
  • Sıcaklık geçerliyse true döndürür

Kendin dene

using System;

class CheckTemperature
{
    // Özel istisna sınıfınızı burada oluşturun
    
    public static bool checkTemperature(int celsius)
    {
        // Kodunuzu buraya yazın
    }
    
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Mantık & Akış bölümündeki tüm dersler

Kendi başına pratik yap: Online C# derleyicisi