VBScript Error Handling

Learn about VBScript error handling techniques including On Error Resume Next, Err object, and structured error handling with practical examples.

VBScript Error Handling

VBScript Error Handling

last modified April 4, 2025

Error handling in VBScript is essential for creating robust scripts that can gracefully handle unexpected situations. Unlike some modern languages, VBScript uses a simple but effective error handling mechanism. This tutorial covers all aspects of VBScript error handling with practical examples.

VBScript Error Handling Overview

VBScript provides two primary error handling approaches: inline error handling with On Error Resume Next and the Err object for error inspection. There is no try-catch mechanism like in other languages.

The On Error Resume Next statement tells VBScript to continue execution after an error occurs. The Err object contains details about the last error. Proper error handling prevents scripts from crashing and allows for meaningful error messages.

Basic Error Handling with On Error Resume Next

The simplest form of error handling in VBScript uses On Error Resume Next. This statement makes the script continue execution after an error. You should check the Err object immediately after operations that might fail.

basic_error_handling.vbs

On Error Resume Next

Dim result result = 10 / 0 ’ Division by zero error

If Err.Number <> 0 Then WScript.Echo “Error #” & Err.Number & “: " & Err.Description Err.Clear Else WScript.Echo “Result: " & result End If

This example demonstrates basic error handling. The division by zero would normally crash the script, but with error handling, we catch and display the error. Always clear the error with Err.Clear after handling it.

Using the Err Object

The Err object provides detailed information about runtime errors. It contains properties like Number, Description, Source, and methods like Clear and Raise.

err_object.vbs

On Error Resume Next

Dim fso, file Set fso = CreateObject(“Scripting.FileSystemObject”) Set file = fso.OpenTextFile(“nonexistent.txt”, 1)

If Err.Number <> 0 Then WScript.Echo “Error Details:” WScript.Echo “Number: " & Err.Number WScript.Echo “Description: " & Err.Description WScript.Echo “Source: " & Err.Source Err.Clear Else file.Close End If

This example shows how to use the Err object properties when handling file operations. The script attempts to open a non-existent file, triggering an error. We then display all available error information before clearing it.

Nested Error Handling

For complex scripts, you might need nested error handling. You can disable error handling with On Error GoTo 0 and re-enable it as needed. This allows different error handling strategies in different parts of your script.

nested_error_handling.vbs

On Error Resume Next

Dim x, y x = 10 y = 0

’ First operation with error handling Dim result1 result1 = x / y

If Err.Number <> 0 Then WScript.Echo “First operation failed: " & Err.Description Err.Clear End If

’ Disable error handling temporarily On Error GoTo 0

’ Second operation without error handling Dim result2 result2 = x / y ’ This will cause script to stop

WScript.Echo “This line won’t be reached”

This example shows nested error handling. The first division is protected, while the second is not. The script will stop at the second division. Use this technique carefully to control error handling scope.

Creating Custom Errors

You can generate custom errors using the Err.Raise method. This is useful for validating input or creating specific error conditions. You can use built-in error numbers or define your own.

custom_errors.vbs

Sub ProcessValue(value) If Not IsNumeric(value) Then Err.Raise 1001, “ProcessValue”, “Input must be numeric” End If WScript.Echo “Processing: " & value * 2 End Sub

On Error Resume Next ProcessValue “abc”

If Err.Number <> 0 Then WScript.Echo “Custom Error #” & Err.Number & “: " & Err.Description WScript.Echo “Source: " & Err.Source Err.Clear End If

This example demonstrates creating and handling custom errors. The ProcessValue subroutine raises an error if the input isn’t numeric. The main script catches and displays this custom error with its details.

Error Handling in File Operations

File operations are common sources of errors in scripts. Proper error handling makes file operations more reliable. Always check for errors after file operations and provide meaningful feedback to users.

file_operations.vbs

On Error Resume Next

Dim fso, file, content Set fso = CreateObject(“Scripting.FileSystemObject”)

’ Try to read a file Set file = fso.OpenTextFile(“data.txt”, 1) If Err.Number = 53 Then ’ File not found WScript.Echo “Error: File not found. Creating new file.” Err.Clear Set file = fso.CreateTextFile(“data.txt”) file.WriteLine “Default content” file.Close ElseIf Err.Number <> 0 Then WScript.Echo “Unexpected error: " & Err.Description WScript.Quit 1 End If

’ If we got here, either file existed or was created Set file = fso.OpenTextFile(“data.txt”, 1) content = file.ReadAll file.Close

WScript.Echo “File content: " & content

This example shows comprehensive file operation error handling. It attempts to open a file, handles the “file not found” case specifically, creates the file if needed, and handles other potential errors. This makes the script more robust.

Source

VBScript Error Handling Documentation

In this article, we have explored VBScript error handling techniques in depth. From basic On Error Resume Next to advanced custom error creation, these methods help create robust scripts. Proper error handling prevents crashes and improves user experience. With these examples, you can implement effective error handling in your VBScript projects.

Author

My name is Jan Bodnar and I am a passionate programmer with many years of programming experience. I have been writing programming articles since 2007. So far, I have written over 1400 articles and 8 e-books. I have over eight years of experience in teaching programming.

List all VBScript tutorials.

ad ad