Vbscript обработка ошибок

На чтение 8 мин Просмотров 1.1к. Опубликовано

В этой статье мы рассмотри обработку ошибок в языке VBScript, а именно объектErr, конструкцию On Error Resume Next и On Error Goto 0. Конструкция VBScript On Error Resume Next включает обработку ошибок, а On Error Goto 0 отменяет их обработку.

Объект Err не нуждается в предварительном объявлении, и доступен всегда, давайте рассмотри его методы и свойства:

  • Description — данное свойство содержит описание ошибки.
  • Number — содержит целое число – номер ошибки. Если значение свойства Number ровно нулю – значит, ошибка отсутствует.
  • Source — свойство содержит название приложения, в котором возникла ошибка.

Методы

Clear – полная очистка информации об ошибке. Стоит обратить внимание, что информация об ошибке автоматически очищается при выполнении операторов On Error Resume Next, Exit Sub и Exit Function.

Raise(number, [source, description]) – данный метод позволяет генерировать собственную ошибку времени выполнения. Видим, что тут можно задать параметры, аналогичные по своей принадлежности свойствам самого объекта Err. Видим, что тут является обязательным только первый параметр.

Хорошо, теперь давайте рассмотри четыре примера на языке vbscript.

Пример 1

'------------------------------------------------------------------------------
' vbscript on error resume next
' произойдет вычисление только для первых 3 значений
' on_error_1.vbs
'------------------------------------------------------------------------------
 
Option Explicit
 
'включаем обработку ошибок
On Error Resume Next
 
dim MyArr(8), icount, Result, msgErr, msg 
 
' заполняем массив 
MyArr(0) = 5 
MyArr(1) = -3 
MyArr(2) = 15 
MyArr(3) = 0 
MyArr(4) = 2 
MyArr(5) = 6 
MyArr(6) = 0 
MyArr(7) = -1 
 
icount=0
msg=""
msgErr = "Ошибка!!!" & vbCrLf
 
'циклично делим число 15 на каждый элемент массива
Do  
     result=15/MyArr(icount)    
     If Err.Number <> 0 Then   
                 msgErr=msgErr & "Код ошибки: " & Err.Number & vbCrLf &_
                 "Описание: " & Err.Description & vbCrLf &_
                 "Приложение: " & Err.Source & vbCrLf
                 result = msgErr          
                 msgErr=""
     end if
     icount = icount+1
     msg=msg & Result & vbCrLf & vbCrLf
Loop While (icount < 8)
 
MsgBox msg

В данном примере мы создали массив из 8 элементов, каждый из которых является числом, два элемента – являются нулями. В цикле do…loop (работа данного цикла рассмотрена в статье Урок 7 по VBScript: Циклы do…loop и while…wend) идет деление числа 15 на каждый элемент массива (Урок 9 по VBScript: Массивы). Так как мы не включили в данном примере очистку информации об ошибке, то произойдёт деление только первых трёх значений, а всё остальное будет принято за ошибку.

Пример 2

'------------------------------------------------------------------------------
' vbscript on error resume next
' Вычисления не произойдут
' on_error_2.vbs
'------------------------------------------------------------------------------
 
Option Explicit
 
'включаем обработку ошибок
On Error Resume Next
 
dim MyArr(8), icount, Result, msgErr, msg 
 
' заполняем массив 
MyArr(0) = 5 
MyArr(1) = -3 
MyArr(2) = 15 
MyArr(3) = 0 
MyArr(4) = 2 
MyArr(5) = 6 
MyArr(6) = 0 
MyArr(7) = -1 
 
icount=0
msg=""
msgErr = "Ошибка!!!" & vbCrLf
 
'циклично делим число 15 на каждый элемент массива
Do  
     result=15/MyArr(icount)    
     If Err.Number <> 0 Then   
                 msgErr=msgErr + "Код ошибки: " & Err.Number & vbCrLf &_
                 "Описание: " & Err.Description & vbCrLf &_
                 "Приложение: " & Err.Source & vbCrLf
                 result = msgErr          
                 msgErr=""
                 ' Отменяем обработку ошибок!!!
                 On Error Goto 0
     end if
     icount = icount+1
     msg=msg & result & vbCrLf & vbCrLf
Loop While (icount < 8)
 
MsgBox msg

Тут мы дополнительно использовали конструкцию On Error Goto 0, которая отключает обработку ошибок. Это приведёт к тому, что никакие вычисления не будут произведены, и при запуске сценария автоматически произойдёт ошибка времени выполнения.

Скачать архив с примерами

Пример 3

'------------------------------------------------------------------------------
' on error resume next vbscript
' Правильный подход обработки ошибок
' on_error_3.vbs
'------------------------------------------------------------------------------
 
Option Explicit
 
'включаем обработку ошибок
On Error Resume Next
 
dim MyArr(8), icount, Result, msgErr, msg 
 
' заполняем массив 
MyArr(0) = 5 
MyArr(1) = -3 
MyArr(2) = 15 
MyArr(3) = 0 
MyArr(4) = 2 
MyArr(5) = 6 
MyArr(6) = 0 
MyArr(7) = -1 
 
icount=0
msg=""
msgErr = "Ошибка!!!" & vbCrLf
 
'циклично делим число 15 на каждый элемент массива
Do  
     'Очищаем информацию об ошибке
     Err.Clear
 
     result=15/MyArr(icount)    
     If Err.Number <> 0 Then   
                 msgErr=msgErr + "Код ошибки: " & Err.Number & vbCrLf &_
                 "Описание: " & Err.Description & vbCrLf &_
                 "Приложение: " & Err.Source & vbCrLf
                 result = msgErr          
                 msgErr=""
     end if
     icount = icount+1
     msg=msg & result & vbCrLf & vbCrLf
Loop While (icount < 8)
 
MsgBox msg

В этом примере мы сделали все правильно, так как вначале цикла прописали Err.Clear, который очищает информацию о предыдущих ошибках.

Ну и наконец четвертый пример, тут мы генерируем собственное описание ошибки.

Пример 4

'------------------------------------------------------------------------------
' on error resume next vbscript
' генерация собственной ошибки
' on_error_4.vbs
'------------------------------------------------------------------------------
 
Option Explicit
 
'включаем обработку ошибок
On Error Resume Next
 
dim MyArr(8), icount, Result, msgErr, msg 
 
' заполняем массив 
MyArr(0) = 5 
MyArr(1) = -3 
MyArr(2) = 15 
MyArr(3) = 0 
MyArr(4) = 2 
MyArr(5) = 6 
MyArr(6) = 0 
MyArr(7) = -1 
 
icount=0
msg=""
msgErr = "Ошибка!!!" & vbCrLf
 
'циклично делим число 15 на каждый элемент массива
Do  
     'Очищаем информацию об ошибке
     Err.Clear
     result=15/MyArr(icount)    
     If Err.Number <> 0 Then   
                 Err.Raise 100, "текущий сценарий", "пробуем делить на ноль"
                 msgErr=msgErr + "Код ошибки: " & Err.Number & vbCrLf &_
                 "Описание: " & Err.Description & vbCrLf &_
                 "Приложение: " & Err.Source & vbCrLf
                 result = msgErr          
                 msgErr=""
     end if
     icount = icount+1
     msg=msg & result & vbCrLf & vbCrLf
Loop While (icount < 8)
 
MsgBox msg

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

I want to use VBScript to catch errors and log them (ie on error «log something») then resume the next line of the script.

For example,

On Error Resume Next
'Do Step 1
'Do Step 2
'Do Step 3

When an error occurs on step 1, I want it to log that error (or perform other custom functions with it) then resume at step 2. Is this possible? and how can I implement it?

EDIT: Can I do something like this?

On Error Resume myErrCatch
'Do step 1
'Do step 2
'Do step 3

myErrCatch:
'log error
Resume Next

asked Oct 1, 2008 at 14:04

apandit's user avatar

apanditapandit

3,3041 gold badge27 silver badges32 bronze badges

1

VBScript has no notion of throwing or catching exceptions, but the runtime provides a global Err object that contains the results of the last operation performed. You have to explicitly check whether the Err.Number property is non-zero after each operation.

On Error Resume Next

DoStep1

If Err.Number <> 0 Then
  WScript.Echo "Error in DoStep1: " & Err.Description
  Err.Clear
End If

DoStep2

If Err.Number <> 0 Then
  WScript.Echo "Error in DoStop2:" & Err.Description
  Err.Clear
End If

'If you no longer want to continue following an error after that block's completed,
'call this.
On Error Goto 0

The «On Error Goto [label]» syntax is supported by Visual Basic and Visual Basic for Applications (VBA), but VBScript doesn’t support this language feature so you have to use On Error Resume Next as described above.

answered Oct 1, 2008 at 14:11

Dylan Beattie's user avatar

Dylan BeattieDylan Beattie

53.7k35 gold badges130 silver badges197 bronze badges

5

Note that On Error Resume Next is not set globally. You can put your unsafe part of code eg into a function, which will interrupted immediately if error occurs, and call this function from sub containing precedent OERN statement.

ErrCatch()

Sub ErrCatch()
    Dim Res, CurrentStep

    On Error Resume Next

    Res = UnSafeCode(20, CurrentStep)
    MsgBox "ErrStep " & CurrentStep & vbCrLf & Err.Description

End Sub

Function UnSafeCode(Arg, ErrStep)

    ErrStep = 1
    UnSafeCode = 1 / (Arg - 10)

    ErrStep = 2
    UnSafeCode = 1 / (Arg - 20)

    ErrStep = 3
    UnSafeCode = 1 / (Arg - 30)

    ErrStep = 0
End Function

answered Apr 27, 2015 at 21:26

omegastripes's user avatar

omegastripesomegastripes

12.4k4 gold badges45 silver badges96 bronze badges

5

You can regroup your steps functions calls in a facade function :

sub facade()
    call step1()
    call step2()
    call step3()
    call step4()
    call step5()
end sub

Then, let your error handling be in an upper function that calls the facade :

sub main()
    On error resume next

    call facade()

    If Err.Number <> 0 Then
        ' MsgBox or whatever. You may want to display or log your error there
        msgbox Err.Description
        Err.Clear
    End If

    On Error Goto 0
end sub

Now, let’s suppose step3() raises an error. Since facade() doesn’t handle errors (there is no On error resume next in facade()), the error will be returned to main() and step4() and step5() won’t be executed.

Your error handling is now refactored in 1 code block

answered Jun 24, 2019 at 9:48

Cid's user avatar

CidCid

15k4 gold badges30 silver badges46 bronze badges

I’m exceptionally new to VBScript, so this may not be considered best practice or there may be a reason it shouldn’t be done this that way I’m not yet aware of, but this is the solution I came up with to trim down the amount of error logging code in my main code block.

Dim oConn, connStr
Set oConn = Server.CreateObject("ADODB.Connection")
connStr = "Provider=SQLOLEDB;Server=XX;UID=XX;PWD=XX;Databse=XX"

ON ERROR RESUME NEXT

oConn.Open connStr
If err.Number <> 0 Then : showError() : End If


Sub ShowError()

    'You could write the error details to the console...
    errDetail = "<script>" & _
    "console.log('Description: " & err.Description & "');" & _
    "console.log('Error number: " & err.Number & "');" & _
    "console.log('Error source: " & err.Source & "');" & _
    "</script>"

    Response.Write(errDetail)       

    '...you could display the error info directly in the page...
    Response.Write("Error Description: " & err.Description)
    Response.Write("Error Source: " & err.Source)
    Response.Write("Error Number: " & err.Number)

    '...or you could execute additional code when an error is thrown...
    'Insert error handling code here

    err.clear
End Sub

answered Feb 7, 2019 at 21:08

MistyDawn's user avatar

MistyDawnMistyDawn

8568 silver badges9 bronze badges

1

What @cid provided is a great answer. I took the liberty to extend it to next level by adding custom throw handler (like in javascript). Hope someone finds its useful.

option Explicit

Dim ErrorCodes
Set ErrorCodes = CreateObject("Scripting.Dictionary")
ErrorCodes.Add "100", "a should not be 1"
ErrorCodes.Add "110", "a should not be 2 either."
ErrorCodes.Add "120", "a should not be anything at all."

Sub throw(iNum)
    Err.Clear

    Dim key
    key = CStr(iNum)
    If ErrorCodes.Exists(key) Then
        Err.Description = ErrorCodes(key)
    Else
        Err.Description = "Error description missing."
    End If
    Err.Source = "Dummy stage"
    
    Err.Raise iNum 'raise a user-defined error
End Sub


Sub facade(a)
    if a=1 then
        throw 100
    end if

    if a = 2 then
        throw 110
    end if

    throw 120
End Sub

Sub Main
    on error resume next

        facade(3)

        if err.number <> 0 then
            Wscript.Echo Err.Number, Err.Description
        end if
    on error goto 0
End Sub

Main

answered Jul 13, 2022 at 20:05

PravyNandas's user avatar

PravyNandasPravyNandas

60711 silver badges12 bronze badges

Материал из GedeminWiki

Перейти к: навигация,
поиск

VBScript имеет весьма скудные встроенные средства обработки ошибок времени выполнения, которые сводятся к двум операторам:

 On Error GoTo 0
 On Error Resume Next

Первый – отключает обработку ошибок (состояние по-умолчанию). Если ошибка случится, то на экран будет выдано сообщение и выполнение текущей процедуры или функции прекратится.

При включенном режиме On Error Resume Next, ошибка не приводит к прерыванию выполнения кода и программист имеет возможность самостоятельно разобраться с ней. Информация об ошибке содержится в глобальном встроенном объекте Err. Ниже приводится описание его свойств и методов:

Description 
Текстовое описание ошибки.
HelpContext 
Номер топика в файле справки, который будет открыт, если пользователь воспользуется клавишей F1 в окне сообщения об ошибке.
HelpFile 
Имя файла справки.
Number 
Целочисленный номер ошибки. 0 означает отсутствие ошибки.
Source 
Наименование приложения, в котором произошла ошибка.

Методы:

Clear 
Очищает все свойства объекта, сбрасывает информацию об ошибке. Обратите внимание, что объект Err автоматически очищается при выполнении следующих операторов: On Error Resume Next, Exit Sub, Exit Function.
Raise 
Генерирует ошибку времени выполнения. Полный формат вызова: Err.Raise(number, source, description, helpfile, helpcontext).

Только первый параметр (номер ошибки) является обязательным. Если опущены, значения остальных параметров подставляются из соответствующих свойств объекта.

Обработку ошибок проиллюстрируем на примере кода, который в цикле запрашивает у пользователя строку и пытается преобразовать ее в дату. Если введенная строка не является датой, то на экран выводится сообщение. Цикл повторяется, пока пользователь не введет корректную дату.

 Dim InputD, InputS
 On Error Resume Next
 Do
   Err.Clear
   InputS = InputBox("Введите дату")
   If IsNumeric(InputS) Then
     Err.Number = vbObjectError + 1
   Else
     InputD = CDate(InputS)
   End If
   If Err.Number <> 0 Then
   Application.MessageBox _
     "Неверный формат даты! Повторите ввод.", _
     "Ошибка", vbOkOnly + vbExclamation + vbSystemModal
   End If
 Loop Until Err.Number = 0
 On Error Goto 0

См. также

  • Использование TCreator

Error Handling

Error handling does not involve finding
errors in your scripts. Instead, use error handling techniques to
allow your program to continue executing even though a potentially
fatal error has occurred. Ordinarily, all runtime errors that are
generated by the VBScript engine are fatal, since execution of the
current script is halted when the error occurs. Error handling allows
you to inform the user of the problem and either halt execution of
the program or, if it is prudent, continue executing the program.

The On Error Resume Next Statement

There are two main elements to error handling in VBScript. The first
is the On

Error statement,
which informs the VBScript engine of your intention to handle errors
yourself, rather than to allow the VBScript engine to display a
typically uninformative error message and halt the program. This is
done by inserting a statement like the following at the start of a
procedure:

On Error Resume Next

This tells the VBScript engine that, should an error occur, you want
it to continue executing the program starting with the line of code
which directly follows the line in which the error occurred. For
example, in the simple WSH script:

On Error Resume Next
x = 10
y = 0
z = x / y
Alert z

a “Cannot divide by Zero” error is generated on the
fourth line of code because the value of y
is 0. But because you’ve placed the On Error
statement in line 1, program execution continues with line 5. The
problem with this is that when an error is generated, the user is
unaware of it; the only indication that an error has occurred is the
blank Alert box (from line 5) that’s displayed for the user.

Tip

A particular On
Error statement
is valid until another On
Error
statement in the line of execution is encountered. This means that if
Function A contains an On Error statement, and
Function A calls Function B, but Function B does not contain an
On
Error statement, the error
handling from Function A is still valid. Therefore, if an error
occurs in Function B, it is the On
Error statement in Function A that handles the
error; in other words, when an error is encountered in Function B,
program flow will immediately jump to the line of code that followed
the call to Function B in Function A. When Function A completes
execution, the On
Error
statement it contains also goes out of scope. This means that, if the
routine that called Function A did not include an
On
Error statement, no error
handling is in place.

This is where the second element of VBScript’s error handling
comes in. VBScript includes an error object, named Err, which, when
used in conjunction with On
Error
Resume
Next, adds much more functionality to error
handling, allowing you to build robust programs and relatively
sophisticated error handling routines.

The Err Object

The Err object is part of the VBScript
language and contains information about the last error to occur. By
checking the properties of the Err object after a particular piece of
code has executed, you can determine whether an error has occurred
and, if so, which one. You can then decide what to do about the error
—you can, for instance, continue execution regardless of the
error, or you can halt execution of the program. The main point here
is that error handling using On Error and the Err
object puts you in control of errors, rather than allowing an error
to take control of the program (and bring it to a grinding halt). To
see how the Err object works and how you can use it within an error
handling regimen within your program, let’s begin by taking a
look at its properties and methods.

Err object properties

Like all
object properties, the properties of the Err object can be accessed
by using the name of the object, Err, the

dot (or period) delimiter, and the
property name. The Err object supports the following properties:

Number

The Number property is an integer value that
contains an error code value between
and 65535, representing the last error. If the value of
Err.Number is 0, no error has occurred.
The line of code like the following, then, can be used to determine
if an error has occurred:

If Err.Number <> 0 Then

Although the properties of the Err object provide information on the
last error to occur in a script, they do not do so permanently. All
the Err object properties, including the Number property, are set
either to zero or to zero-length strings after an End Sub, End
Function, Exit Sub or Exit Function statement. In addition, though,
you can explicitly reset Err.Number to
zero after an error by calling the Err object’s
Clear method. The WSH script in Example 4.8 illustrates the importance of resetting the
Err
object after an error occurs.

Example 4-8. Failing to Reset the Err Object

Dim x, y ,z

On Error Resume Next

x = 10
y = 0
z = x / y
If Err.Number <> 0 Then
   MsgBox "There's been an error #1"
Else
  MsgBox z
End IF

z = x * y
If Err.Number <> 0 Then
   MsgBox "There's been an error #2"
Else
   MsgBox z
End If

End Sub

The division by zero on the fifth line of the script in Example 4.8 generates an error. Therefore, the conditional
statement on line 6 evaluates to True, and an
error dialog is displayed. Program flow then continues at line 12.
Line 12 is a perfectly valid assignment statement that always
executes without error, but the Err.Number property still contains
the error number from the previous error in line 5. As a result, the
conditional statement on line 13 evaluates to
True, and a second error dialog is displayed.
Despite the two error messages, though, there’s only been a
single error in the script.

The Err object can be reset by using the Clear method (which is
discussed in the next Section 4.2.2.2).

Description

The Description property contains a string
that describes the last error that occurred. You can use the
Description property to build your own message box alerting the user
to an error, as the WSH script in Example 4.9 shows.

Example 4-9. Using the Description Property to Display Error Information

Dim x, y ,z
On Error Resume Next

x = 10
y = 0
z = x / y
If Err.Number <> 0 Then
   MsgBox "Error number " & Err.Number & ", " & _
          Err.Description & ", has occurred"
   Err.Clear
Else
   MsgBox z
End If

z = x * y
If Err.Number <> 0 Then
   MsgBox "Error No:" & Err.Number & " - " & _
          Err.Description & " has occurred"
   Err.Clear
Else
   Alert z
End If
Source

The Source property contains a string
expression that indicates the class name of the object or application
that generated the error. You can use the Source property to provide
users with additional information about an error; in particular,
about where an error occurred.

The value of the Source property for all errors generated within
scripted code is simply “Microsoft VBScript runtime
error.” This is true of all VBScript scripts, whether
they’re written for Active Server Pages, Windows Script Host,
Internet Explorer, or Outlook forms. Obviously, this makes the Source
property less than useful in many cases. However, you can assign a
value to the Source property in your own error handling routines to
indicate the name of the function or procedure in which an error
occurred. In addition, the primary use of the Source property is to
signal an error that is generated by some other object, like an OLE
automation server (like Microsoft Excel or Microsoft Word) or a COM
component.

Err object methods

The two
methods of the Err object allow you to raise or clear an error, in
the process simultaneously changing the values of one or more Err
object properties. The two methods are:

Raise

The Err.
Raise method allows you to generate a
runtime error. Its syntax is:[1]

where ErrorNumber is the numeric code for
the error you’d like to generate. At first glance, generating
an error within your script may seem like a very odd thing to want to
do! However, there are times, particularly when you are creating
large, complex scripts, that you need to test the effect a particular
error will have on your script. The easiest way to do this is to
generate the error using the Err.Raise method and providing the error
code to the ErrorNumber parameter, then
sit back and note how your error handling routine copes with the
error, what the consequences of the error are, and what side effects
the error has, if any. The client-side script in Example 4.10, for instance, allows the user to enter a
number into a text box, which is passed as the error code value to
the Err.Raise method. If the value of the error code is nonzero, an
Alert box opens that displays the error code and its corresponding
description. Figure 4.6, for instance, shows the
Alert box that is displayed when the user enters a value of 13 into
the text box.

Example 4-10. Calling the Err.Raise Method

<HTML>
<HEAD>
<TITLE>Using the Err Object</TITLE>
<SCRIPT LANGUAGE="vbscript">

Sub cmdButton1_OnClick
On Error Resume Next
errN = Document.frm1.errcode.value 
Err.Raise(errN)

If Err.Number <> 0 Then
 Alert "Error No:" & Err.Number & " - " & Err.Description
 Err.Number = 0
End If

End Sub

</SCRIPT>
</HEAD>
<BODY BGCOLOR="white">
<CENTER>
<H2>Generating an Error</H2>
<P>
<FORM NAME="frm1">
Enter an Error Code &nbsp;
<INPUT TYPE="text" NAME="errcode">
<INPUT TYPE="button" NAME="cmdButton1" VALUE="Generate Error">
</CENTER>
</BODY>
</HTML>

At present there is no definitive list of VBScript runtime error
codes available from Microsoft. Table 4.1 lists a
few of the most common
runtime
errors.

Tip

An Error Code Generator
(ERRCODES1.HTML,
ERRCODES1.ASP, and
ERRCODES1.VBS), which allows you to generate a
complete list of current VBScript error codes, can be found on the
O’Reilly Visual Basic web site at

http://vb.oreilly.com.

Table 4-1. Some Common VBScript Error Codes

Error Number

Description

5

Invalid procedure call

6

Overflow

7

Out of memory

9

Subscript out of range

11

Division by zero

13

Type mismatch

Generating a Type mismatch error at runtime

Figure 4-6. Generating a Type mismatch error at runtime

Clear

The Clear method clears the information
that the Err object is storing about the previous error; it takes no
parameters. It sets the values of
Err.Number to
and the Err object’s Source and Description properties to
a
null

string.

Get VBScript in a Nutshell now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.

Процедуры VBScript — это блоки кода, выполняющие определенные задачи на VBScript — языке сценариев, разработанном Microsoft. Эти процедуры используются для организации и модульности кода, что упрощает его чтение, понимание и поддержку. Есть Два типа процедур в VBScript: подпрограммы и функции. Подпрограммы используются для выполнения ряда действий без возврата значения, тогда как функции возвращают значение после выполнения определенной задачи. Используя процедуры, разработчики могут повторно использовать код, улучшать удобочитаемость кода, и улучшить эффективность кода.

Основные выводы

Следующая таблица обеспечивает краткий обзор процедур VBScript:

Тип процедуры Описание
подпрограмма Выполняет серию действий без возврата значения.
Функция Возвращает значение после выполнения определенной задачи.

Обратите внимание, что таблица выше Резюме of ключевая информация связанные с процедурами VBScript.

Урок VBScript № 3: Процедуры VBScript

Процедуры VBScript Подпроцедура VBScript 1

В VBScript процедуры — это блоки кода, выполняющие определенные задачи. Они позволяют вам организоватьнаш код и сделать его более модульным и многоразовым. Есть Два типа процедур в VBScript: функции и подпрограммы.

Объяснение процедур VBScript

Функции в VBScript — это процедуры, возвращающие значение. Они определяются с помощью Function ключевое слово и может быть вызван из другие части кода. Функции могут иметь параметры — переменные, которые передаются функции при ее вызове. Функция затем можно использовать эти параметры производить расчеты или другие операции и вернуть результат.

Подпрограммы, вкл. с другой стороны, — это процедуры, которые не возвращают значение. Они определяются с помощью Sub ключевое слово, а также может иметь параметры. Подпрограммы обычно используются для выполнения действий или задач без возврата. конкретный результат.

Использование процедур VBScript

Процедуры в VBScript полезны для организациинаш код и сделать его более читабельным и удобным в обслуживании. Разбивая yнаш код в меньшие процедуры, вы можете легко понять и изменить конкретные части of ваша программа не затрагивая отдых кода.

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

Пример процедур VBScript

Давайте Посмотрите на примере, чтобы понять, как работают процедуры в VBScript. Предположим, у нас есть программа это вычисляет площадь of Прямоугольник. Мы можем определить функцию под названием CalculateArea который принимает два параметра, length и width, и возвращает расчетная площадь.

«`vbscript
Функция CalculateArea(длина
, ширина)
Тусклая область
область
= длина * ширина
ВычислитьОбласть = площадь

End Function

‘Вызов функции
результат
= ВычислитьОбласть(5, 10)
MsgBox
Площадь of прямоугольник это: ” и результат
«`

В этом примере мы определяем CalculateArea функция, которая умножает length и width параметры для расчета площадь of прямоугольник. Расчетная площадь затем возвращается с использованием имени функции. Мы можем позвонить эта функция и отображать результат используя MsgBox функции.

Процедуры и функции VBScript

Процедуры и функции в VBScript основные строительные блоки программирования VBScript. Они позволяют инкапсулировать код в многоразовые блоки, делая yнаш код более организованным и эффективным. Используя процедуры и функции, вы можете легко выполнять действия, манипулировать строками, обрабатывать ошибки, работать с массивами и многое другое.

В дополнение к основной синтаксис и использование процедур и функций, VBScript также предоставляет различные функции как передача параметров, возвращаемые значения и обработка ошибок. Эти особенности повышать гибкость и функциональность yнаш код.

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

Итак, начните использовать процедуры и функции в своем коде VBScript, чтобы сделать его более модульным, многоразовым и эффективным. Они значительно улучшат ваша программамой опыт и сделать егонаш код более ремонтопригоден в долгое время.

Типы процедур VBScript

Процедуры VBScript существенная часть программирования VBScript. Они позволяют вам организоватьнаш код и легко выполнять определенные действия. Есть Различные типы процедур VBScript, которые вы можете использовать в зависимости от твои нужды. Давайте исследуем Каждый тип в деталях.

Подпроцедуры VBScript

VBScript Подпроцедуры, также известные как подпрограммы, представляют собой блоки кода, выполняющие конкретное действие. Они определяются с помощью Sub ключевое слово, за которым следует имя процедуры. Подпроцедуры не возвращайте значение. Они обычно используются для группировки набора связанные действия одновременно.

Вот пример подпроцедура VBScript:

vbscript
Sub GreetUser(name)
MsgBox "Hello, " & name & "!"
End Sub

В приведенном выше примере GreetUser подпроцедура принимает параметр name и отображает окно сообщения персонализированное приветствие.

Функция VBScript

Ошибки VBScript

Функции VBScript похожи на Подпроцедуры, но они возвращают значение. Они определяются с помощью Function ключевое слово, за которым следует имя функции. Функции полезны, когда вам нужно выполнить конкретный расчет или получить значение.

Вот пример функция VBScript:

vbscript
Function AddNumbers(num1, num2)
AddNumbers = num1 + num2
End Function

В приведенном выше примере AddNumbers функция принимает два параметра num1 и num2 и возвращается их сумма.

Вызов процедуры VBScript

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

Вот пример вызова подпроцедура VBScript и функция VBScript:

vbscript
GreetUser "John"
result = AddNumbers(5, 3)

В приведенном выше примере мы вызываем GreetUser подпроцедура с Аргумент "John". Мы также называем AddNumbers функция с Аргументs 5 и 3. В результате of вызов функции хранится в переменной result.

Тип процедуры VBScript

Тип процедуры VBScript определяет, является ли она подпроцедура or функция. Тип процедуры указано в определение процедуры используя Sub or Function ключевое слово.

Вот сравнение между VBScript Подпроцедуры и функции:

Подпроцедуры VBScript Функции VBScript
Не возвращать значение Вернуть значение
Определяется с помощью Sub ключевое слово Определяется с помощью Function ключевое слово
Используется для группировки действий вместе. Используется для вычислений или получения значений.

Понимание Различные типы процедур VBScript позволяет организоватьнаш код эффективно и легко выполнять конкретные действия. Нужно ли вам групповые действия вместе или выполнять вычисления, процедуры VBScript обеспечивают гибкость тебе нужно.

Не забудьте использовать соответствующий тип процедуры на основании ваши требования и использовать параметры и возвращаемые значения для улучшения функциональность вашего кода VBScript.

Преимущества процедур VBScript

Преимущества процедур VBScript

Процедуры VBScript, также известные как функции и подпрограммы, предлагают несколько преимуществ в программировании VBScript. Эти процедуры позволю тебе организоватьнаш код и легко выполнять действия, инкапсулируя набор инструкций внутри именованный блок кода.

Одной из основные преимущества процедур VBScript — это возможность использовать параметры. Параметры позволяют передавать значения процедуре, которые затем можно использовать внутри процедуры для выполнения определенных действий. Эта гибкость позволяет создавать многоразовый код что можно использовать с разные ценности, делая yнаш код более эффективный и модульный.

При вызове процедуры VBScript вы можете передавать аргументы в круглых скобках. Эти аргументы представлять Значениеs который будет использоваться процедурой. Используя параметры и аргументы, вы можете настроить поведение of ваши процедуры и сделать их более универсальными.

Другое преимущество процедур VBScript — это возможность возвращать значение. С помощью Return операторе вы можете указать значение, которое будет возвращено процедурой. Это позволяет вам получить результат of расчет или выполнить другие операции на основании результат процедуры.

В дополнение к параметризация и возвращаемые значения, процедуры VBScript также помогают организоватьнаш код. Инкапсулируя набор действий внутри процедуры, вы можете легко идентифицировать и управлять разные части of ваша программа. Это делает тебянаш код более читаемым и удобным в сопровождении, особенно при работе с сложные задачи.

VBScript Объект WScript

VBScript WScript объект обеспечивает диапазон of полезные методы и свойства для взаимодействия с среда хоста сценариев Windows. Этот объект позволяет выполнять различные задачи например, отображение сообщений, доступ аргументы командной строки, чтение и запись в консольИ многое другое.

С помощью WScript объект, вы можете улучшить функциональность вашего кода VBScript и взаимодействовать с пользователем или операционная система. Например, вы можете использовать WScript.Echo метод для отображения сообщений пользователю или метод WScript.Arguments свойство для доступа аргументы командной строки перешли к сценарию.

VBScript запускает процесс и ждет

VBScript WScript.Shell объект обеспечивает метод под названием Run что позволяет вам начать процесс и дождитесь его завершения, прежде чем продолжить выполнение скрипта. Это может быть полезно, когда вам нужно запустить внешние программы или сценарии из вашего кода VBScript.

С помощью Run метод с Wait параметр установлен на True, вы можете убедиться, что сценарий ожидает процесс закончить, прежде чем продолжить. Это может быть полезно, когда вам нужно синхронизировать выполнение вашего скрипта с завершение of внешняя задача.

Например, вы можете использовать Run способ начать пакетный файл или исполняемый файл, а затем дождитесь его завершения, прежде чем выполнять дальнейшие действия в вашем сценарии. Это позволяет вам контролировать течение вашего сценария и убедитесь, что определенные задачи завершены, прежде чем перейти к следующий шаг.

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

Обработка ошибок VBScript

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

Учебное пособие по VBScript № 4: Обработка ошибок VBScript и выполнение VBScript

In этот учебник, мы будем исследовать концепт обработки ошибок в VBScript. Мы узнаем о Различные типы ошибок VBScript и способы их эффективной обработки. Кроме того, мы обсудим операторы «Возобновить при ошибке далее», которые позволяют сценарию продолжать выполнение даже в случае возникновения ошибки.

Ошибки VBScript

Ошибки VBScript — это проблемы, возникающие во время выполнения код VBScript. Эти ошибки могут быть вызваны различные факторы, Такие, как неверный синтаксис, неправильный типы данных, или неожиданные условия. Понимание Различные типы ошибок VBScript имеет решающее значение для эффективная обработка ошибок.

Типы ошибок VBScript

Существуют несколько типов ошибок VBScript, с которыми вы можете столкнуться при написании кода VBScript. Некоторые распространенные типы следующие:

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

  • Runtime Errors: Ошибки выполнения происходят во время выполнения кода и часто вызваны неожиданными условиями или неверные данные. Эти ошибки может быть сложнее выявить и устранить, поскольку они могут не сразу проявиться.

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

Обработка ошибок VBScript

VBScript обеспечивает несколько механизмов для эффективной обработки ошибок. Один из часто используемых подходов — это оператор «Возобновить при ошибке следующим». Это утверждение позволяет сценарию продолжать выполнение даже в случае возникновения ошибки, просто минуя Ошибка и переходим к следующая строка кода.

Хотя функция «Возобновить при ошибке далее» может быть полезна в определенные сценарииважно правильно обрабатывать ошибки, чтобы обеспечить целостность и надежность вашего сценария. Полное игнорирование ошибок может привести к неожиданное поведение и усложнить выявление и устранение проблем.

Для более эффективной обработки ошибок можно использовать опцию «Включить». Ошибка Перейти» утверждение. Это утверждение позволяет указать метка or номер строчки к которому сценарий должен перейти при возникновении ошибки. Используя этот подходвы можете реализовать собственные процедуры обработки ошибок и предоставить осмысленные сообщения об ошибках для пользователя.

Неверный вызов процедуры или аргумент VBScript

Одна распространенная ошибка с которым вы можете столкнуться, это ошибка «Неверный вызов процедуры или аргумент». Эта ошибка обычно происходит, когда функция или подпрограмма вызывается с неверный номер параметров или с параметрами неправильный тип данных. Решить эта ошибка, убедитесь, что вы используете правильный номер и тип параметров при вызове функции или подпрограммы.

Операция VBScript не разрешена, когда объект закрыт

Другая ошибка с которым вы можете столкнуться, это «Операция не разрешена, когда объект is Закрыто» ошибка. Эта ошибка происходит, когда вы пытаетесь выполнить Операция on объект это уже закрылось. Избегать эта ошибка, убедитесь, что вы правильно управляете жизненный цикл of ваши объекты и выполнять операции только над открытые объекты.

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

Это для этот учебник on Обработка ошибок VBScript. Оставайтесь с нами больше руководств по VBScript где мы будем исследовать другие аспекты программирования VBScript, например манипуляции со строками, условные операторы, циклы и многое другое. Счастливое кодирование!

Выполнение VBScript

VBScript, сокращение от Выпуск сценариев Visual Basic, — это язык сценариев, разработанный Microsoft. Его часто используют для автоматизации задач и создания динамических веб-страниц. В эта секция, мы будем исследовать разные подходы выполнить VBScript и узнать, как запустить его в Windows 10.

Подход к выполнению VBScript

Чтобы выполнить VBScript, у вас есть несколько вариантов. Давайте Посмотрите at каждый подход:

  1. Использование хоста сценариев Windows (WSH): Хост сценариев Windows is хост сценариев командной строки который позволяет запускать код VBScript. Выполнить файл VBScript используя WSH, откройте командную строку, перейдите к каталог где находится скрипт, и введите cscript scriptname.vbs or wscript scriptname.vbs, в зависимости от того, хотите ли вы запустить скрипт в режим командной строки или с графический интерфейс.

  2. Встраивание VBScript в HTML: VBScript может быть встроен в HTML код для создания динамических веб-страниц. Чтобы выполнить VBScript, встроенный в HTML-файл, просто откройте HTML-файл in веб-браузер, и код VBScript будет выполнен.

  3. Использование редактора VBScript или IDE: Существуют несколько Редакторы VBScript и интегрированные среды разработки (IDE), которые предоставляют удобный интерфейс для написания, редактирования и выполнения кода VBScript. Эти инструменты часто имеют такие функции, как подсветка синтаксиса, завершение кода, и возможности отладки, что упрощает написание и тестирование кода VBScript.

Как запустить VBScript в Windows 10

Если вы используете Windows 10, вы можете следовать этим шагам для запуска VBScript:

  1. Открыть блокнот or любой другой текстовый редактор.
  2. Напишите свой код VBScript в редактор.
  3. Save. файла расширение .vbs, Такие, как myscript.vbs.
  4. Дважды щелкните по сохраненный файл .vbs, и код VBScript будет выполнен с использованием хост сценариев по умолчанию, который обычно является хостом сценариев Windows.

Как запустить VBScript шаг за шагом

Бежать Шаг VBScript шаг за шагом, вы можете использовать возможности отладки предоставляемые Редакторы VBScript или IDE. Эти инструменты позволяют вам устанавливать точки останова, пошагово строка кода построчно и проверять переменные и выражения во время выполнения.

Вот общий подход к бегу Шаг кода VBScript пошагово:

  1. Открытые ваш редактор VBScript или ИДЕ.
  2. Открытые файл VBScript ты хочешь бежать.
  3. Установить точки останова at желаемые места в унаш код нажав на номер строчкиs или используя предоставленная панель инструментов отладки.
  4. Start сеанс отладки.
  5. Выполнение остановится на первая точка останова встречается.
  6. Используйте элементы управления отладкой для пошагового выполнения кода, выполнения построчно и наблюдения Значениеs переменных и выражений.
  7. Продолжайте выполнять код, пока не дойдете до В конце или столкнуться еще одна точка останова.

Запустив Шаг VBScript шаг за шагом вы сможете легко выявить и исправить любые вопросы в унаш код, Что делает процесс отладки более эффективным.

Помните, что функции VBScript, подпрограммы, программирование, код, синтаксис, переменные, циклы, массивы, операторы, обработка ошибок, манипуляции со строками, условные операторы, комментарии, типы данных, константы, выражения, объекты, события, классы, методы, свойства, отладка, обработка файлов, функции даты и времени, и математические функции все существенные аспекты программирования VBScript. Понимание и использование эти элементы помогу тебе написать эффективный и действенный код VBScript.

Вот и все! Теперь у вас есть хорошее понимание о том, как выполнить VBScript и запустить его в Windows 10. Приятного написания сценариев!

Дополнительные ресурсы

Примеры VBScript

Если вы ищете несколько практических примеров чтобы понять программирование VBScript, вот несколько ресурсов это может помочь вам начать работу. Эти примеры охватывают широкий спектр тем, включая функции VBScript, подпрограммы, циклы, массивы, операторы, обработку ошибок, манипуляции со строками, условные операторы, комментарии, типы данных, константы, выражения, объекты, события, классы, методы, свойства, отладка, обработка файлов, функции даты и времени, и математические функции.

  1. Функции VBScript: Функции в VBScript позволяют организовывать действия и легко повторно использовать код. Вы можете использовать функции для выполнения определенных задач и возврата значения. Чтобы создать функцию, используйте команду Function Ключевое слово, за которым следует имя функции и любые параметры, заключенные в круглые скобки. Чтобы вызвать функцию, используйте имя функции, затем круглые скобки и любые аргументы, которые вы хотите передать.

  2. Подпрограммы VBScript: Подпрограммы в VBScript аналогичны функциям, но не возвращают значения. Они используются для выполнения серии действий без возврата результата. Чтобы создать подпрограмму, используйте команду Sub Ключевое слово, за которым следует имя подпрограммы и любые параметры, заключенные в круглые скобки. Чтобы вызвать подпрограмму, используйте имя подпрограммы, за которым следуют круглые скобки и любые аргументы, которые вы хотите передать.

  3. Программирование VBScript: VBScript — это язык сценариев, разработанный Microsoft и широко используемый для автоматизации задач в Среды Windows. Его легко освоить, и он предоставляет широкий спектр функций для эффективного написания кода.

  4. Код VBScript: Код VBScript написан на простой текст и может быть выполнен с использованием хост сценариев на базе Windows, Следует определенный синтаксис и использует переменные, циклы, условные операторы и другие конструкции программирования для выполнения различные действия.

Где находится хост сценариев на базе Microsoft Windows

Хост сценариев на базе Microsoft Windows is компонент of операционная система Windows который позволяет вам выполнять код VBScript. Это обеспечивает среда выполнения для запуска скриптов и автоматизации задач. Хост сценариев находится в папка System32 of каталог Windows.

Для доступа хост сценариев, вы можете использовать cscript or wscript команда, за которой следует тропинка в ваш файл VBScript, cscript команда запускает скрипт в окно командной строки, В то время wscript команда запускает скрипт в графическое окно.

Где находится хост сценариев на базе Microsoft Windows

Хост сценариев на базе Microsoft Windows находится в папка System32 of каталог Windows. Вы можете найти его, перейдя к следующий путь:

C:\Windows\System32\wscript.exe

Это местоположение по умолчанию для хост сценариев запускаемый файл. Однако возможно, что Местоположение может отличаться в зависимости от ваша установка Windows.

Не забудьте использовать соответствующая команда (cscript or wscript) с последующим тропинка в ваш файл VBScript выполнить yнаши скрипты через хост сценариев.

Эти дополнительные ресурсы и информация должна помочь вам в Ваше путешествие эффективно изучать и использовать VBScript. Приятного написания сценариев!

Заключение

В заключение, процедуры VBScript существенный аспект программирования на VBScript. Они позволяют нам организовать наш код в многоразовые блоки, Что делает наши скрипты более эффективен и прост в обслуживании. Процедуры помогают в разрушении сложные задачи в более мелкие, управляемые куски, Улучшение удобочитаемость кода и сокращение избыточности. Используя процедуры, мы можем инкапсулировать логику и функциональность, делая наш код модульный и гибкий. Будь то простая подпрограмма или функцию, возвращающую значение, воспроизводятся процедуры VBScript. решающая роль в повышении общая структура и функциональность наши скрипты. Итак, в следующий раз, когда вы будете писать код VBScript, не забудьте использовать сила процедур!

Часто задаваемые вопросы

1. В чем разница между функцией и процедурой в VBScript?

Функция в VBScript есть Блок кода, который выполняет конкретную задачу и возвращает значение. Он может принимать параметры и используется, когда ожидается возврат значения. Процедура, также известная как подпрограмма, похожа на функцию, но не возвращает значение. Он используется для выполнения конкретной задачи без возврата любое значение.

2. Как запустить VBScript в Windows 10?

Чтобы запустить VBScript в Windows 10, вам необходимо сохранить сценарий с помощью расширение .vbs. Затем вы можете дважды щелкнуть файла чтобы запустить его. Альтернативно вы можете запустить его из командной строки, набрав «cscript filename.vbs».

3. Как используются параметры в функциях и процедурах VBScript?

Параметры в функциях и процедурах VBScript используются для передачи значений или переменных из одна часть сценария в функцию или процедуру. Они позволяют функции или процедуре выполнять задачи с эти ценности или переменные.

4. Можете ли вы привести пример процедуры VBScript?

Да, вот пример процедуры VBScript:

«`
Дополнительный дисплейсообщение
()
MsgBox «Привет, мир! «
End Sub

Вызов дисплея сообщения
``
In this example,
DisplayMessage` — это процедура, которая отображает окно сообщения текст «Привет, мир!” когда звонят.

5. Какова цель VBScript?

VBScript используется в качестве языка сценариев для добавления интерактивности веб-сайтам. автоматизировать задачи in программных приложений, и создать административные сценарии и сценарии входа в систему для Операционные системы Windows.

6. Как обрабатывать ошибки в VBScript?

VBScript обеспечивает несколько путей для обработки ошибок. Оператор «On Error Resume Next» позволяет сценарию продолжать работу даже в случае возникновения ошибки. Объект «Эрр» может использоваться для захвата и обработки информация об ошибке.

7. В чем разница между параметрами ByVal и ByRef в VBScript?

ByVal и ByRef используются для указания способа передачи аргументов процедурам и функциям в VBScript. ByVal проходит Значение of Аргумент, что означает, что процедура или функция не могут изменять исходная переменная. По ссылке проходит ссылка в Аргумент, что означает, что процедура или функция могут изменять исходная переменная.

8. Какова роль циклов в VBScript?

Циклы в VBScript используются для выполнения Блок кода несколько раз, пока определенное условие встречается. Поддержка VBScript несколько типов циклов, включая циклы «For», «While» и «Do While».

9. Можете ли вы привести пример функции на VBScript?

Да, вот пример функция VBScript:

«`
Функция AddNumbers(a
, б)
ДобавитьНомберс = а + б
End Function

MsgBox AddNumbers(5, 10)
``
In this example,
AddNumbers` — это функция, которая принимает два параметра и возвращает их сумма.

10. Как я могу отладить код VBScript?

Вы можете отладить код VBScript, используя отладчик сценариев Microsoft or инструменты отладки доступна в ваша интегрированная среда разработки (ИДЕ). Эти инструменты позволяют вам пройти через все этапынаш код, устанавливайте точки останова и проверяйте переменные, чтобы найти и исправить ошибки.

Понравилась статья? Поделить с друзьями:
  • Vbs ошибка 800a01a8
  • Vbs скрипты фейк ошибка
  • Vbs ошибка требуется объект string
  • Vba excel ошибка next without for
  • Vba excel ошибка 457