Ö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.
Görev
OrtaException 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:
- "Temperature is not valid." mesajını ayarlayan varsayılan bir kurucu
- Ö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
InvalidTemperatureExceptionfı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
}
}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
1Çok Boyutlu Diziler
2B Dizilere Giriş2B Tanımlama ve Başlatma2B Dizi Öğelerine Erişim2B Dizilerle İç İçe DöngülerDüzensiz DizilerYaygın Matris İşlemleriTekrar - Çok Boyutlu4Akış Denetimi Teknikleri
Erken DönüşlerKoruma KoşullarıAtlama İfadeleri (goto)Break ve Continueİç İçe Koşulları Düzleştirme7İleri Düzey Mantıksal Operatörler
Kısa Devre DeğerlendirmesiKoşullu Mantıksal OperatörlerOperatör ÖnceliğiÖzet - İleri Düzey Operatörler2İleri Düzey Karar Verme
Birden Çok KoşulKarmaşık Boolean MantığıIf ve Switch Karşılaştırmasıİç İçe Switch İfadeleriÖzet - İleri Düzey Kararlar5İstisna Yönetimi
Try-Catch Temelleriİstisna TürleriBirden Çok Catch BloğuDosyalarla ÇalışmaFinally BloğuUsing ve Try-Finally KarşılaştırmasıÖzel İstisnalarTekrar - Hata Yönetimi3Döngü İyileştirmeleri
Döngü PerformansıKarmaşık Yapılar Üzerinde İterasyonHer Döngü TürüDöngüleri Yeniden DüzenlemeÖzet - Optimize Edilmiş Döngüler6Null Yönetimi
Null Referanslarının TemelleriNullable Değer TürleriNull Kontrolü DesenleriSavunmacı ProgramlamaTekrar - Null GüvenliğiKendi başına pratik yap: Online C# derleyicisi