Поиск

Получение собственных классов Exception

Как я уже говорил, в какой-то момент вам может потребоваться добавить дополнительную информацию или преобразовать исключение, прежде чем передать его пользовательскому коду. При этом вы можете захотеть предоставить базовый класс, чтобы было понятно, что ваш класс передает исключение только одного типа. Таким образом, клиенту нужно будет заботиться только об обнаружении этого базового класса.

Еще один пример, когда вы можете захотеть создать производный от Exception класс, это когда вы хотите выполнять некоторые действия (например, записывать событие в журнал, посылать кому-нибудь электронную почту) при каждой передаче исключения. В этом случае вам нужно создать свой собственный класс, производный от Exception, и поместить в его конструктор нужный вам код:

using System;
public class TestException : Exception
{
// Вероятней всего у вас здесь будут дополнительные //
методы и свойства, расширяющие .NET Exception
// Конструктор базового класса Exception, public TestExceptionO
:base() {} public TestException(String message)
:base(message) {} public TestException(String message, Exception innerException)
:base(message, innerException) {}
}
public class DerlvedExceptionTestApp
{
public static void ThrowExceptionO
{
throw new TestException("ошибка"); >
public static void Main() {
try
{
ThrowExceptionO;
}
catch(Exception e)
{
Console. WriteLine(e.ToStringO);
} } }

Метод ToString выводит комбинацию свойств: текстовое представление имени класса исключения, строковое сообщение, переданное конструктору исключения и StackTrace.

TestException; ошибка
at DerivedExceptionTestApp.Main()