Create Custom Exception Class in C#:
We have seen built-in exception classes in the previous section. However, you often like to raise an exception when the business rule of your application gets violated. So, for this you can create a custom exception class by deriving Exception or ApplicationException class.
The .Net framework includes ApplicationException class since .Net v1.0. It was designed to use as a base class for the custom exception class. However, Microsoft now recommends Exception class to create a custom exception class.
For example, create InvalidStudentNameException class in a school application, which does not allow any special character or numeric value in a name of any of the students.
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))
    {
    }
  
}
            Now, you can raise InvalidStudentNameException in your program whenever the name contains special characters or numbers. Use the throw keyword to raise an 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);
            
    }
}
 
Thus, you can create custom exception classes to differentiate from system exceptions.
 
            Points to Remember :
- Exception is a base class for any type of exception class in C#.
- Derive Exception class to create your own custom exception classes.
Learn about delegates next.

