Menu
Coddy logo textTech

Custom Exceptions

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

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

Özel bir istisna oluşturmak için, Exception'dan miras alan bir sınıf tanımlayın. Kalıtım, yeni sınıfınızın üst sınıfın —bu durumda Exception— tüm davranışlarını otomatik olarak kazanması anlamına gelir ve işlevsellik eklemenize veya özelleştirmenize olanak tanır. class MyException : Exception sözdizimi MyException, Exception'ı miras alır 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 miras alır.
: base(...) — üst Exception yapıcıyı çağırarak hata mesajını ayarlar.
İlk yapıcı, hiçbiri sağlanmadığında bir varsayılan mesaj sağlar.
İkinci yapıcı, çağıranların hatayı ayrıntılı olarak tanımlayabilmesi için bir özel mesaj kabul eder.

Artık ihtiyacınız olduğunda özel istisnanızı fırlatabilirsiniz:

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

Bu kod negatif bir yaş ile yürütüldüğünde, özel istisnanızı "Age cannot be negative." mesajı ile fırlatacaktır.

Not: Bu dersin alıştırmalarında, doğrulama fonksiyonları girdi geçerli olduğunda true döndürür ve geçersiz olduğunda özel bir istisna fırlatır. İşlenmemiş bir istisna yürütmeyi hemen durdurduğu için, test vakaları yalnızca true dönüş yolunu doğrulamak zorundadır — istisna kendisi geçersiz girdiler için gözlemlenebilir sonuçtur.

challenge icon

Görev

Orta

InvalidTemperatureException adında Exception'dan türeyen özel bir istisna sınıfı oluşturun. Şu özelliklere sahip olmalıdır:

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

Sonra checkTemperature adında bir metot uygulayın ki:

  • Celsius cinsinden bir sıcaklığı temsil eden tamsayı parametresi alsın
  • Sıcaklık -273'ten küçükse "Temperature below absolute zero!" mesajıyla bir InvalidTemperatureException fırlatsın
  • Sıcaklık geçerliyse true döndürsün

Kopya kağıdı

Özel bir istisna oluşturmak için, Exception'dan türeyen bir sınıf tanımlayın:

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

Gerektiğinde özel istisnanızı fırlatın:

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

Kendin dene

using System;

class CheckTemperature
{
    // Özel istisna sınıfınızı burada oluşturun
    
    public static bool checkTemperature(int celsius)
    {
        // Kodu 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