English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C# базовый учебник

C# продвинутый учебник

C# направленный на объект (OOP)

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);
            
    }
}
Вывод:
Некорректное имя студента: James000

Таким образом, вы можете создать пользовательские классы исключений, чтобы отличать системные исключения.