Menu
Coddy logo textTech

Özel İstisnalar

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 belirli istisna türleri oluşturmanıza olanak tanır.

Özel bir istisna oluşturmak için türeyen bir sınıf tanımlayın Exception'dan. 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ı ve aynı zamanda 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 miras alır.
: base(...): hata mesajını ayarlamak için üst sınıfın Exception kurucusunu çağırır.
İlk kurucu, hiçbir mesaj sağlanmadığında bir varsayılan mesaj sunar.
İkinci kurucu, çağıranların hatayı ayrıntılı şekilde açıklayabilmesi için bir özel mesaj kabul eder.

Artık gerektiğinde özel durumunuzu 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ı oluşturur.

Not: Bu dersteki alıştırmalarda doğrulama işlevleri, girdi geçerli olduğunda true döndürür ve geçerli olmadığında özel bir istisna oluşturur. İşlenmeyen bir istisna yürütmeyi hemen durdurduğundan, test senaryolarının yalnızca true dönüş yolunu doğrulaması gerekir: geçersiz girdiler için istisnanın kendisi gözlemlenebilir sonuçtur.

challenge icon

Görev

Orta

Exception sınıfından miras alan InvalidTemperatureException adlı özel bir istisna sınıfı oluşturun. Bu sınıf şunlara sahip olmalıdır:

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

Ardından, şunları yapan checkTemperature adlı bir yöntem uygulayın:

  • Santigrat cinsinden bir sıcaklığı temsil eden bir tamsayı parametresi alır
  • Sıcaklık -273'ten küçü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 exception 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