Иллюстрированный самоучитель по Visual Basic .NET

Инициирование исключений

Получив инициированное исключение, внешний код получает текст сообщения методом Message класса Exception и узнает о возникшей проблеме.

Примечание
На практике в подобных ситуациях чаще возникает исключение класса EndOfStream-Exception, производного от IOException. Операции с потоками данных рассматриваются в главе 9
.

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

Последний случай требует некоторой дополнительной работы, поскольку для этого потребуется определить класс, производный от существующего класса исключения. Предположим, вы хотите определить новый класс исключения, производный от System.IO lOException. Новый класс отличается от старого лишь одним ReadOnly-свойством, возвращающим ключ, с которым не ассоциируется парное значение:

Public Class LastValueLostException Inherits System.IO.IO.Exception
Private mKey As String
Public Sub New(ByVal theKey As String)
MyBase.New("No value found for last key")
mKey = theKey
End Sub
Public Readonly Property LastKey() As String Get
Return mKey
End Get
End Property
End Class

Обратите внимание: имя созданного класса исключения завершается словом Exception. Это стандартное правило, которому мы настоятельно рекомендуем следовать. Получив исключение LastValueLostException, программист может воспользоваться свойством LastKey, значение которого передается в конструкторе нового класса исключения, и получить ключ, не ассоциируемый со значением. Следующая строка обеспечивает выдачу правильной информации методом Message базового класса Exception:

MyBase.New("No value found for last key")

В этой строке вызывается конструктор базового класса (и в конечном счете конструктор предка Exception).

Возможно, вы заметили, что в классе LastValueLostException не переопределяются другие методы – такие, как метод ToString, унаследованный от Exception. В стандартных ситуациях объекты исключений всегда должны выводить стандартные сообщения.

Как использовать созданный класс в программе? Например, если последний ключ без парного значения был равен "oops", исключение будет инициироваться следующей командой:

Throw New LastValueLostException("oops")
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.