Ö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.
Görev
OrtaException sınıfından türeyen, InvalidTemperatureException adlı özel bir istisna sınıfı oluştur. Şunlara sahip olmalı:
- "Temperature is not valid." mesajını ayarlayan varsayılan bir yapıcı
- Ö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
InvalidTemperatureExceptionfı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
}
}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