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

因此,因此,您可以创建自定义异常类来区分系统异常。