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



              


Инициирование исключений - часть 3


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

Public Class LastValueLostException Inherits System.I0.I0.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")




Содержание  Назад  Вперед