C# 中的自定义异常类型
本文关键字:类型 自定义异常 | 更新日期: 2023-09-12 17:39:56
C# 包括内置的异常类型,如 NullReferenceException
、MemoryOverflowException
等。
但是,您通常希望在违反应用程序的业务规则时引发异常。因此,为此,您可以通过派生ApplicationException
类来创建自定义异常类。
.Net 框架包括自 .Net v1.0 以来ApplicationException
类。它旨在用作自定义异常类的基类。但是,Microsoft现在建议Exception
类来创建自定义异常类。
不应在代码中引发ApplicationException
异常,也不应捕获ApplicationException
异常,除非打算重新引发原始异常。
例如,在学校应用程序中创建 InvalidStudentNameException 类,该类不允许在任何学生的姓名中使用任何特殊字符或数值。
Example: ApplicationException
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 关键字引发异常。
Example: throw custom exception
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因此,您可以创建自定义异常类以区别于系统异常。