English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# カスタム例外

C# には内蔵の例外タイプ、例えば NullReferenceException、MemoryOverflowException などがあります。しかし、アプリケーションのビジネスルールが侵害された場合、通常は例外を発生させたいです。したがって、ApplicationException クラスを派生することでカスタム例外クラスを作成することができます。

から.Net v1.0から、.NetフレームワークはApplicationExceptionクラスを導入しました。これはカスタム例外クラスの基底クラスとして使用される予定でしたが、Microsoftは現在、Exceptionクラスを使用してカスタム例外クラスを作成することを推奨しています。

例えば、学校アプリケーションでInvalidStudentNameExceptionクラスを作成し、このクラスは学生の名前に特殊文字や数字を含むことを許可しません。

class Student
{}}
    public int StudentID { get; set; }
    public string StudentName { get; set; }
}
[Serializable]
class InvalidStudentNameException : Exception
{}}
    public InvalidStudentNameException()
    {}}
    }
    public InvalidStudentNameException(string name)
        : base(String.Format("Invalid Student Name: {0}", name))
    {}}
    }
  
}

今や、プログラムの名前が特殊文字や数字を含む場合、InvalidStudentNameExceptionがプログラム内で発生します。throwキーワードを使用して例外を発生させます。

class Program
{}}
    static void Main(string[] args)
    {}}
        Student newStudent = null;
          
        try
        {}}               
            newStudent = new Student();
            newStudent.StudentName = "James007";
            
            ValidateStudent(newStudent);
        }
        catch(InvalidStudentNameException ex)
        {}}
            Console.WriteLine(ex.Message);
        }
          
        Console.ReadKey();
    }
    private static void ValidateStudent(Student std)
    {}}
        Regex regex = new Regex("^[a-zA-Z]+$");
        if (!regex.IsMatch(std.StudentName))    throw new InvalidStudentNameException(std.StudentName);
            
    }
}
出力:
Invalid Student Name: James000

したがって、システム例外を区別するためにカスタム例外クラスを作成できます。