VB.Net 中的异常处理:Try & Catch 处理示例

VB.Net 中的异常是什么?

An 特殊课程 在 VB.Net 中,错误是指程序执行过程中出现的问题。它是由意外情况引起的。一个很好的例子是,当您执行除法运算时,如果除以零 (0),就会引发异常。

VB.Net 中的异常处理是什么?

例外情况 VB.Net,可以将程序的控制权从一个部分转移到另一个部分。在 VB.Net 中,使用以下 4 个关键字处理异常:

关键字 Detail
尝试 Try 块的作用是识别将激活特定异常的代码块。它后面应该跟一个或多个 catch 块。
摔角 异常的捕获在此块中完成。它是一个处理异常的异常处理器。
终于 无论是否发生异常,都使用 Finally 块运行一组语句。
问题发生后,抛出异常。这就是 Throw 关键字的作用。

VB.Net 中的 Try Catch 语法

VB.Net 中的 Try Catch 语句使用以下语法定义:

Try
   [ try_Statement(s) ]
   [ Exit Try ]
[ Catch [ exception_name [ As type ] ] [ When expression ]
   [ catch_Statement(s) ]
   [ Exit Try ] ]
[ Catch ... ]
[ Finally
   [ finally_Statement(s) ] ]
End Try

Try/Catch 块应该包围可能引发异常的代码。此代码称为受保护代码。当您需要捕获各种类型的异常时,可以使用多个 catch 语句。

VB.Net 中使用 Try Catch 和 Finally 的异常处理示例

使用 Try/Catch 语句,您可以将普通程序代码与错误处理系统分开。让我们演示如何使用 Try、Catch 和 Finally 关键字处理异常。

步骤1) 创建一个新的控制台应用程序。

步骤2) 使用此代码:

Module Module1
    Sub divisionFunction(ByVal n1 As Integer, ByVal n2 As Integer)
        Dim answer As Integer
        Try
            answer = n1 \ n2
        Catch ex As DivideByZeroException
            Console.WriteLine("Exception: {0}", ex)
        Finally
            Console.WriteLine("Answer is: {0}", answer)
        End Try
    End Sub
    Sub Main()
        divisionFunction(4, 0)
        Console.ReadKey()
    End Sub

End Module

步骤3) 单击工具栏上的“开始”按钮执行代码。您应该得到以下输出:

异常处理

以下是代码截图:

异常处理

代码说明:

  1. 创建一个名为 Module1 的模块。
  2. 创建一个名为 divisionFunction 的子过程,其中包含两个整数参数 n1 和 n2。ByVal 是一个 VB.Net 关键字,表示参数的值将通过值传递。
  3. 创建一个名为 answer 的整数变量。
  4. Try/Catch 块的开始。我们需要用这个块包围我们怀疑可能引发异常的代码。
  5. 对变量 n1 和 n2 的值执行除法运算。除法运算的结果赋值给变量 answer。此代码可能会引发异常,例如,当我们将数字除以零时,因此我们用 Try/Catch 块将其包围。
  6. 捕获名为 DivideByZeroException 的异常并将生成的异常消息分配给 ex。
  7. 在控制台上打印一些文本来通知用户引发的异常的类型/名称。
  8. Finally 块。无论是否捕获到异常,此块都会执行。
  9. 在控制台上打印一些文本显示除法运算的结果。
  10. Try 块的结束,即错误处理代码的结束。
  11. 结束 divisionFunction 子程序。
  12. 主要子程序的开始。
  13. 调用/调用 divisionFunction 子过程。两个整数参数的值在此处传递。n1=4 和 n2=0。这意味着除法运算将是 4\0,即 n1\n2。
  14. 暂停控制台窗口等待用户采取行动将其关闭。
  15. 主要子程序结束。
  16. 模块结束。

VB.Net 中的用户定义异常

VB.Net 允许您定义自己的异常。您可以从 ApplicationException 类中获取用户定义的异常类。让我们通过一个例子来演示这一点:

VB.Net 中用户定义异常的示例

以下是 VB.Net 中用户定义异常的一个示例:

步骤1) 创建一个新的控制台应用程序。

步骤2) 使用以下代码:

Module Module1

    Public Class HeightIsZeroException : Inherits ApplicationException
        Public Sub New(ByVal text As String)
            MyBase.New(text)
        End Sub
    End Class
    Public Class Height
        Dim height As Integer = 0
        Sub showHeight()
            If (height = 0) Then
                Throw (New HeightIsZeroException("Zero Height found"))
            Else
                Console.WriteLine("Height is: {0}", height)
            End If
        End Sub
    End Class
    Sub Main()
        Dim hght As Height = New Height()
        Try
            hght.showHeight()
        Catch ex As HeightIsZeroException
            Console.WriteLine("HeightIsZeroException: {0}", ex.Message)
        End Try
        Console.ReadKey()
    End Sub

End Module

步骤3) 单击顶部栏中的“开始”按钮来执行代码。您应该得到以下输出:

用户定义异常

以下是代码截图:

用户定义异常

代码说明:

  1. 创建一个名为 Module1 的模块。
  2. 创建一个名为HeightIsZeroException的异常类。该类继承了所有ApplicationException类。
  3. 创建一个名为 New 的子过程。它将采用一个名为 text 的字符串参数。
  4. 调用基类构造函数并将上述参数传递给它。
  5. 新子程序结束。
  6. HeightIsZeroException 类的结束。
  7. 创建一个名为 Height 的类。其公共访问修饰符为 Public,表示它将可供公众访问。
  8. 创建一个名为 Height 的整型变量并将其值初始化为 0。
  9. 创建一个名为 showHeight() 的子过程。
  10. 检查变量 Height 的值是否为 0。我们使用了 If…Then 条件。
  11. 如果上述条件为真,则抛出 HeightIsZeroException。抛出此异常时将显示消息 Zero Height Found。
  12. 当 If 条件不成立时执行 Else 部分。
  13. 当高度不为 0 时,在控制台上打印显示高度的消息。
  14. If 条件结束。
  15. showHeight() 子过程结束。
  16. 课程结束高度。
  17. 主要子程序的开始。
  18. 创建一个名为 Height 的对象作为 Height 类的实例。
  19. 异常处理块的开始。
  20. 调用 Height 类中定义的 showHeight() 子过程。我们使用了这个类的一个对象来访问这个方法。这一行可能会导致异常。因此,我们用异常处理代码将其包围起来。
  21. 如果发生 HeightIsZeroException 异常,则将其作为对象 ex 进行捕获。
  22. 当捕获到 HeightIsZeroException 时在控制台上打印的消息。
  23. 异常处理块的结束。
  24. 暂停控制台窗口等待用户采取行动将其关闭。
  25. 主要子程序结束。
  26. 模块结束。

在 VB.Net 中抛出异常

在异常处理中,你可以选择抛出一个对象。但是,该对象必须直接或间接地从 System.Exception 类派生。例如:

VB.Net 中抛出异常的示例

下面是 VB.Net 中抛出异常的一个例子:

步骤1) 创建一个新的控制台应用程序。

步骤2) 使用以下代码:

Module Module1

    Sub Main()
        Try
            Throw New ApplicationException("Throwing a custom exception")
        Catch ex As Exception
            Console.WriteLine(ex.Message)
        Finally
            Console.WriteLine("The Finally Block")
        End Try
        Console.ReadKey()
    End Sub


End Module

步骤3) 单击顶部栏中的“开始”按钮来执行代码。您应该得到以下内容:

抛出异常

以下是代码截图:

抛出异常

代码说明:

  1. 创建一个名为 Module1 的模块。
  2. 主要子程序的开始。
  3. 错误处理代码的开始。
  4. 抛出异常对象。此代码可能会生成异常,因此我们用 Try/Catch 块将其包围。
  5. 如果该行引发异常,则将异常作为对象 ex 捕获。
  6. 一旦发生异常,则在控制台上打印异常消息。
  7. 无论是否捕获到异常,Finally 块都会运行。
  8. 执行 Finally 块时在控制台上打印的消息。
  9. 异常处理代码结束。
  10. 暂停控制台一段时间,等待用户采取行动将其关闭。
  11. 主要子程序结束。
  12. 模块结束。

总结

  • 异常是指程序执行过程中,由于意外的情况而引起的问题。
  • 如果您怀疑某些代码会产生异常,请用 Try/Catch 块将其括起来。
  • Finally 块位于 Try/Catch 块之后,无论是否捕获到异常都会执行。
  • VB.Net 允许我们创建自定义异常。