Помогни ни да направим Uroci.net по - богат! Добави урок

Обработване на логически грешки - Logical Errors

bubust   трудност:    видян: 4589


- Откриване на логически грешки - Detecting Logical Errors

За да открием логическа грешка, ние поставяме (error-detection) кода за откриване на грешки непосредствено следвайки потенциалния край на обработка (offender). Нека имаме процедура за приемане на последователност от цели числа от потребителя, като стартираме с броя на числата:

Public Sub GetSomeData( )

Dim DataCt As Integer

DataCt = CInt(InputBox("Enter number of items."))

' код за получаване на индивидуалните стойности на данните ...

End Sub

Подходящото място за error-detecting кода е непосредствено след функция InputBox, където можем да проверим за отрицателни числа:

Public Sub GetSomeData( )

Dim DataCt As Integer

DataCt = CInt(InputBox("Enter number of items."))

' проверка за грешки

If DataCt < = 0 then

' нещо полезно тук

End If

' код за получаване на индивидуалните стойности на данните ...

End Sub



- Къде да обработваме логически грешки - Logical Error

След като открием логическа грешка, имаме три избора за обработване на тази грешка.


8.3.1 Обработване на грешка на място

Логическа грешка може да бъде обработена на мястото, където е открита Ето пример:

Public Sub GetSomeData( )

TryAgain:

DataCt = CInt(InputBox("Enter number of items."))

' проверка за грешки

If DataCt < = 0 then

If MsgBox("Number must be a positive integer." & _

" Try again or cancel.", vbQuestion+vbOKCancel) _

= vbOK then

Goto TryAgain

Else

Exit Sub

End If

End If

' код за получаване на индивидуалните стойности на данните ...

End Sub

Обработка на логическа грешка на място е целесъобразна, когато необходимия код е кратък. Целесъобразно е в процедури на свойства (Property procedures), които често изискват няколко реда за инстанция на променливата и валидизация на данните.

Обработване на грешка в манипулатор на грешка (error handler) на приключваща процедура (offending)

Можем да дублираме процедурата, която Visual Basic използва за грешки по време на изпълнение, просто при вдигане на собствена грешка от този тип (runtime error). Eто пример за структурирано обработване на грешки:

Try

Dim DataCt As Integer = CInt(InputBox("Enter number of items."))

' проверка за грешки

If DataCt <= 0 Then

' хващане на изключение

Throw New Exception("Must enter a positive number.")

End If

Catch ex As Exception

MsgBox(ex.Message)

End Try

Забележете че конструкторът на Exception class (в една от своите предефинирани - overloaded форми) е:

Overloads Public Sub New(String)

където String е съобщението за грешка, което трябва да бъде асоциирано с грешката.

Ето един пример за вдигане на грешка, чрез неструктурирано обработване на грешки:

Public Sub GetSomeData( )

On Error Goto ErrGetSomeData

DataCt = CInt(InputBox("Enter number of items."))

' проверка за грешки

If DataCt < = 0 then

' вдигане на грешка

Err( ).Raise Number:= ErrBadDataCt

End If

' код за получаване на индивидуалните стойности на данните ...

Exit Sub

' Error-handler

ErrGetSomeData:

Select Case Err( ).Number

Case ErrBadDataCt

'' справяне с грешката чрез извеждане на съобщение

'' което търси помощ от потребителя

Case Else

'' справяне с другите грешки

End Select

Exit Sub

End Sub


8.3.2 Подаване на грешка към викащата процедура

Подаването на грешка към викащата процедура може да бъде направено с параметър на offending процедура или като върната стойност на offending функция. Значи, манипулаторът на грешки - error handler на викащата процедура може да се вика чрез вдигане на грешка.



Регистрирайте се, за да добавите коментар


Калдейта ЕООД - © 2003-2010. Всички права запазени.
Препоръчваме: Национален Бизнес | Bomba.bg | IT Новини | Диплома.бг | TRAVEL туризъм | Реферати | AmAm.bg | Иде.ли | Курсови работи | Фото Форум | Spodeli.net | Фото-Култ | Atol.bg | Elmaz.com | MobileBulgaria.com | Казанлък.Com