Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Программирование для администраторов
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

4. Рекомендуемая структура скрипта. Ошибки и отладка

Обработка ошибок в VBScript: самостоятельная работа

Упражнение 1. Обработка ошибок

Скопируйте на свой компьютер файл \\London\templates\errors.vbs и откройте его в PrimalScript. Этот скрипт выполняет деление двух введенных вами чисел.

Реализуйте обработку ошибок таким образом, чтобы:

1) при значении второго числа, равного 0, пользователю выдавалось сообщение "Делить на ноль нельзя!" и приглашение ввести другое число;

2) если пользователь в любом из окон ввода нажал кнопку Cancel, выводилось повторное приглашение вести это число;

3) если пользователь ввел в любом из окон ввода строковое значение, выводилось сообщение "Нужно число" и повторное приглашение на ввод числа.

Код скрипта errors.vbs выглядит так:

Option Explicit

Dim nNum1
Dim nNum2
Dim nResult

nNum1 = InputBox("Введите первое число")
nNum2 = InputBox("Введите второе число")

nResult = nNum1 / nNum2

MsgBox nResult,, "Результат деления"

Ответ к упражнению 1. Обработка ошибок

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

Call MainProc

Sub MainProc()

Dim nRes1, nAnwser

nRes1 = fDiv()

Select Case nRes1

Case 1

            MsgBox("Деление на ноль!")

            nAnwser = MsgBox ("Начать заново?", vbYesNo)

            If nAnwser = vbYes Then

            Call MainProc

            Else

            WScript.Quit

            End If

Case 2

            MsgBox("Нужно число!")

            nAnwser = MsgBox ("Начать заново?", vbYesNo)

            If nAnwser = vbYes Then

            Call MainProc

            Else

            WScript.Quit

            End If

Case 3

            MsgBox("Возникла неизвестная ошибка")

            nAnwser = MsgBox ("Начать заново?", vbYesNo)

            If nAnwser = vbYes Then

            Call MainProc

            Else

            WScript.Quit

            End If

End Select

End Sub

Function fDiv()

On Error Resume Next

Dim nNum2, nNum1, nResult

nNum1 = InputBox("Введите первое число")

nNum2 = InputBox("Введите второе число")

nResult = CInt(nNum1)/Cint(nNum2)

Select Case Err.Number

Case 0

            MsgBox nResult

            fDiv = 0

Case 11

            fDiv = 1

Case 13

            fDiv = 2

Case Else

            fDiv = 3

End Select

End Function

Другой вариант решения – использовать цикл и обработку ошибок:

Option Explicit

Dim nNum1

Dim nNum2

Dim nResult

Dim sError

nNum1 = ""

nNum2 = ""

do

nNum1 = InputBox("Введите первое число:")

On Error Resume next

sError = CInt(nNum1)

If Err.Number = 13 Then

MsgBox ("Повторите ввод")

nNum1 = ""

End If

On Error goto 0

loop while (nNum1 = "")

do

nNum2 = InputBox("Введите второе число:")

On Error Resume next

sError = CInt(nNum2)

If Err.Number = 13 Then

MsgBox ("Повторите ввод")

nNum2 = ""

Elseif nNum2 = 0 Then

MsgBox ("Делить на ноль нельзя!")

nNum2 = ""

End If

On Error goto 0

Loop While (nNum2 = "")

nResult = nNum1 / nNum2

MsgBox nResult,, "Результат деления: "

Третий вариант – самый лучший – вообще не допускает возникновения ошибок:

Option Explicit

Dim nNum1

Dim nNum2

Dim nResult

Do

    nNum1 = InputBox("Введите первое число: ")

    If IsNumeric(nNum1 & "") Then Exit Do

    MsgBox "Нужно число!"

Loop

Do

    nNum2 = InputBox("Введите второе число: ")

    If IsNumeric(nNum2 & "") Then

        If Int(nNum2)<>0 Then Exit Do

        MsgBox "Деление на ноль!"

    Else

        MsgBox "Нужно число!"

    End if

Loop

nResult = nNum1 / nNum2

MsgBox nResult,, "Результат деления: "

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2016, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru