C# 自定義異常

C # 包括內(nèi)置的異常類型,如 NullReferenceException、 MemoryOverflowException 等。但是,當(dāng)您的應(yīng)用程序的業(yè)務(wù)規(guī)則被違反時,您通常希望引發(fā)異常。因此,可以通過派生 ApplicationException 類來創(chuàng)建自定義異常類。

從.Net v1.0開始,.Net框架引入 ApplicationException 類。 它旨在用作自定義異常類的基類。 但是,Microsoft現(xiàn)在建議使用Exception類來創(chuàng)建自定義異常類。

例如,在學(xué)校應(yīng)用程序中創(chuàng)建InvalidStudentNameException類,該類不允許任何學(xué)生的姓名中包含任何特殊字符或數(shù)字值。

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))
    {

    }
  
}

現(xiàn)在,只要程序名稱包含特殊字符或數(shù)字,就可以在程序中引發(fā) InvalidStudentNameException。使用 throw 關(guān)鍵字引發(fā)異常。

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

因此,因此,您可以創(chuàng)建自定義異常類來區(qū)分系統(tǒng)異常。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清