Для размещения исключений в языке VB.NET следует воспользоваться оператором Throw. Этот оператор имеет один обязательный параметр, который является объектом, описываемым классом System. Exception. (В листинге 9.3 показан код, использующий исключение, размещенное в блоке Try.)
Если необходимо где-либо разместить исключение, его можно сгенерировать с помощью одного из методов
Перемещение исключений
'Создание и перемещение исключения в одном операторе Throw New System.Exception() 'Использование базового исключения 'Генерация исключения и его отдельное перемещение Dim oIOException As System.10.EndOfStreamException oIOException = new System.10.EndOfStreamException( "Sample End of Stream Exception") Throw oIOException
Обработка ошибок— это процесс устранения ситуаций, когда что-то происходит не так, как надо. Проблемы, с которыми придется столкнуться, могут быть сгруппированы по двум категориям: относящиеся к окружению и созданные разработчиками.
К проблемам окружения могут быть отнесены, например, дискета, отсутствующая в дисководе, неработающая сеть или недоступная база данных. Эти события не могут быть предусмотрены заранее, но так или иначе с ними придется столкнуться.
Зачастую проблемы, созданные разработчиком, представляют собой события, которых можно было бы избежать, приняв заранее соответствующие меры предосторожности. (Причем это предпочтительнее организации ловушек для перехвата непредвиденных ситуаций.) К примерам типичных программных ошибок можно отнести деление целого числа на нуль, обращение к элементу массива с несуществующим индексом или использование необъявленной объектной переменной.
Обработка ошибок является наиболее важным аспектом создания надежных прил
... Читать дальше »
В предыдущих версиях Visual Basic существовала возможность создания определяемых пользователем типов данных {User Defined Data Types, или UDT) с помощью оператора Туре. Определяемый пользователем тип данных, как показано в листинге 7.12, представляет собой объединение нескольких различных типов в один тип данных.
ТИП Employee в Visual Basic 6.0
Public Type Employee FirstName as String LastName as String SocialSecurityNumber as String BirthDate as Date Dependents as Integer End Type В VB.NET, как показано в листинге 7.13, оператор Туре заменен оператором Structure. ЛИСТИНГ 7.13. Структура типа Employee в VB.NET Public Structure Employee Public FirstName as String Public LastName as String Public SocialSecurityNumber as String Public BirthDate as Date Public Dependents as Integer End Structure
Оператор S t r u c t u r e фактически создает численный тип. В действительности структуры пр
... Читать дальше »
Одним из наиболее часто используемых типов переменных является целочисленный. В предыдущих версиях Visual Basic к целым числам были отнесены все целые числа из диапазона -32 768-32 767. В VB.NET этот диапазон был увеличен на несколько порядков.
Теперь к данным типа I n t e g e r относятся все целые числа в диапазоне -2 147 483 648- 2 147 483 647. Кроме этого, существует несколько вариантов типа I n t e g e r , которые также относятся к численным типам: Short, Long и Byte. Тип Integer, как и Boolean, обладает определенными методами, которые используются для обработки данных. Кроме того, тип данных Integer содержит метод Format, позволяющий заменить функцию Format, используемую в предыдущих версиях Visual Basic. Функция Format в языках Visual Basic 6.0 и VB.NET имеет соответственно следующий вид:
Булевы (или логические) переменные представляют собой базовый тип данных, который может принимать только одно из значений: истина или ложь (True или False). В среде .NET Framework данные типа Boolean являются объектами и обладают определенными методами, позволяющими манипулировать типом. В основном это методы преобразования, используемые для конвертирования данных типа Boolean в строковые, целочисленные или другие типы данных.
В Visual Basic версий 5.0 или 6.0 для преобразования данных типа Boolean в данные, например, строкового типа используется функция CSTR, синтаксис которой приведен в следующем примере:
sFlag = CSTR(bFlag)
В VB.NET для подобных целей можно обратиться к синтаксису предыдущих версий или использовать объектно-ориентированную версию языка:
В предыдущих версиях Visual Basic существовали объекты и встроенные переменные. Встроенные переменные представляют собой ячейки памяти с определенным содержимым; язык, в свою очередь, предусматривает функции, позволяющие работать с этим содержимым. Объекты также представляют собой ячейки памяти, обработка которых происходит с помощью средств СОМ-модели и виртуальных таблиц.
Обработка переменных и объектов осуществляется по-разному. Присвоение значения переменной в Visual Basic 6.0 происходит, например, следующим образом: SName = sFirstName При этом содержимое ячейки sFirstName копируется в ячейку sName. Следует заметить, что использование подобного выражения для объявления объектов приведет к тому, что объекты oSalariedEmployee и oEmployee будут ссылаться на один и тот же объект. В этом случае при изменении свойств одного из объектов (например, oSalariedEmployee.FirstName ="НовоеЗначение" или oEmployee.FirstName = "НовоеЗначение", где НовоеЗначение — произвольное зна
... Читать дальше »
В предыдущих версиях Visual Basic существовал только один способ создания обработчика событий — разработка процедуры
Синтаксис обработчика события в предыдущих версиях Visual Basic ObjectName_EventName(Event Parameters)
Например, событие, происходящее при щелчке мышью на кнопке, которой присваивалось имя Buttonl, определялось как событие Buttonl_Click. Синтаксис событий в среде .NET Framework и определяется так: SuB EventHandlerNaine(ByVal sender As Object, ByVal e As System.EventArgs) Handles Object.Event
В предыдущих версиях Visual Basic параметры событий передавались явно. В .NET Framework параметры включены во второй параметр, который фактически представля- ет собой коллекцию. В листинге 4.20 приведен пример обработчика события Form MouseDown приложения Windows Form. Класс System. EventArgs является подклас- сом, который вводит значения координат X и Y, а также свойства кнопки, позволяющие обеспечить функциональные возможности мыши.
Теперь модель события в Visual Basic.NET выполнена на основе концепции делегатов.
Делегат (delegate) — это объект, который может вызывать объектные методы. Делегат может быть представлен в виде указателей функции, обеспечивающих типовую безопасность. Процесс создания делегатов вручную в VB.NET достаточно прост.
Пример делегата
Delegate Function MyCompareDelegate(ByVal x As Integer, ByVal у As Integer) As Boolean Sub MySub(ByVal MyDelegate as MyCompareDelegate) MyDelegate.Invoke(5,3) End Sub Function CompareLow(ByVal X as Integer, ByVal Y as Integer) as Boolean If X > Y then Return True Else Return False End If End Function Function CompareHigh(ByVal X as Integer, ByVal Y as Integer) as Boolean > If X < Y then Return True Else Return False End If End Function Sub Main() Call MySub(AddressOf Me.CompareLow) Call MySub(AddressOf Me.CompareHigh) End Sub... Читать дальше »
Перегрузка позволяет разработчику определить несколько функций с одинаковым именем, но с разными параметрами. Списки параметров могут содержать одинаковое или разное число параметров, которые, в свою очередь, могут быть как одного, так и разных типов. На основании списка параметров компилятор определяет во время компиляции, какая из версий данной функции должна быть вызвана. В том случае, если функция возвращает какое-либо значение, типы данных списка параметров и возвращаемый тип образуют сигнатуру (signature). приведен пример двух функций, выполняющих совершенно разные действия, но имеющих одну и ту же сигнатуру.
Сигнатуры функций
Public Function FunctionOne(ByVal companyName as String, ByVal companylD as Integer) as String End Function Public Function FunctionTwo.(ByVal firstName as String, ByVal employeeID as Integer) as String End Function
Перегрузка функций является мощным средством, позволяющим с
... Читать дальше »
Перегрузка позволяет разработчику определить несколько функций с одинаковым именем, но с разными параметрами. Списки параметров могут содержать одинаковое или разное число параметров, которые, в свою очередь, могут быть как одного, так и разных типов. На основании списка параметров компилятор определяет во время компиляции, какая из версий данной функции должна быть вызвана. В том случае, если функция возвращает какое-либо значение, типы данных списка параметров и возвращаемый тип образуют сигнатуру (signature). приведен пример двух функций, выполняющих совершенно разные действия, но имеющих одну и ту же сигнатуру.
Сигнатуры функций
Public Function FunctionOne(ByVal companyName as String, ByVal companylD as Integer) as String End Function Public Function FunctionTwo.(ByVal firstName as String, ByVal employeeID as Integer) as String End Function
Перегрузка функций является мощным средством, позволяющим с
... Читать дальше »