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)異常。