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.
Görev
OrtaInvalidTemperatureException adında Exception'dan türeyen özel bir istisna sınıfı oluşturun. Şu özelliklere sahip olmalıdır:
- "Temperature is not valid." mesajını ayarlayan varsayılan bir kurucu.
- Ö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
InvalidTemperatureExceptionfı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
}
}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
1Multi-dimensional Arrays
2D Arrays BasicsDeclaring and Initializing 2DAccessing 2D Array ElementsNested Loops with 2D ArraysJagged ArraysCommon Matrix OperationsRecap - Multi-dimensional4Flow Control Techniques
Early ReturnsGuard ClausesJump Statements (goto)Break and ContinueFlatten Nested Conditionals7Logical Operators Advanced
Short-Circuit EvaluationConditional Logical OperatorsOperator PrecedenceRecap - Advanced Operators2Advanced Decision Making
Multiple ConditionsComplex Boolean LogicIf vs. Switch ComparisonNested Switch StatementsRecap - Advanced Decisions5Exception Handling
Try-Catch BasicsException TypesMultiple Catch BlocksWorking with FilesFinally BlockUsing vs. Try-FinallyCustom ExceptionsRecap - Error Handling3Loop Enhancements
Loop PerformanceIterating ComplexEach Loop TypeRefactoring LoopsRecap - Optimized Loops6Null Handling
Null Reference BasicsNullable Value TypesNull Checking PatternsDefensive ProgrammingRecap - Null Safety