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) 单击工具栏上的“开始”按钮执行代码。您应该得到以下输出:
以下是代码截图:
代码说明:
- 创建一个名为 Module1 的模块。
- 创建一个名为 divisionFunction 的子过程,其中包含两个整数参数 n1 和 n2。ByVal 是一个 VB.Net 关键字,表示参数的值将通过值传递。
- 创建一个名为 answer 的整数变量。
- Try/Catch 块的开始。我们需要用这个块包围我们怀疑可能引发异常的代码。
- 对变量 n1 和 n2 的值执行除法运算。除法运算的结果赋值给变量 answer。此代码可能会引发异常,例如,当我们将数字除以零时,因此我们用 Try/Catch 块将其包围。
- 捕获名为 DivideByZeroException 的异常并将生成的异常消息分配给 ex。
- 在控制台上打印一些文本来通知用户引发的异常的类型/名称。
- Finally 块。无论是否捕获到异常,此块都会执行。
- 在控制台上打印一些文本显示除法运算的结果。
- Try 块的结束,即错误处理代码的结束。
- 结束 divisionFunction 子程序。
- 主要子程序的开始。
- 调用/调用 divisionFunction 子过程。两个整数参数的值在此处传递。n1=4 和 n2=0。这意味着除法运算将是 4\0,即 n1\n2。
- 暂停控制台窗口等待用户采取行动将其关闭。
- 主要子程序结束。
- 模块结束。
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) 单击顶部栏中的“开始”按钮来执行代码。您应该得到以下输出:
以下是代码截图:
代码说明:
- 创建一个名为 Module1 的模块。
- 创建一个名为HeightIsZeroException的异常类。该类继承了所有ApplicationException类。
- 创建一个名为 New 的子过程。它将采用一个名为 text 的字符串参数。
- 调用基类构造函数并将上述参数传递给它。
- 新子程序结束。
- HeightIsZeroException 类的结束。
- 创建一个名为 Height 的类。其公共访问修饰符为 Public,表示它将可供公众访问。
- 创建一个名为 Height 的整型变量并将其值初始化为 0。
- 创建一个名为 showHeight() 的子过程。
- 检查变量 Height 的值是否为 0。我们使用了 If…Then 条件。
- 如果上述条件为真,则抛出 HeightIsZeroException。抛出此异常时将显示消息 Zero Height Found。
- 当 If 条件不成立时执行 Else 部分。
- 当高度不为 0 时,在控制台上打印显示高度的消息。
- If 条件结束。
- showHeight() 子过程结束。
- 课程结束高度。
- 主要子程序的开始。
- 创建一个名为 Height 的对象作为 Height 类的实例。
- 异常处理块的开始。
- 调用 Height 类中定义的 showHeight() 子过程。我们使用了这个类的一个对象来访问这个方法。这一行可能会导致异常。因此,我们用异常处理代码将其包围起来。
- 如果发生 HeightIsZeroException 异常,则将其作为对象 ex 进行捕获。
- 当捕获到 HeightIsZeroException 时在控制台上打印的消息。
- 异常处理块的结束。
- 暂停控制台窗口等待用户采取行动将其关闭。
- 主要子程序结束。
- 模块结束。
在 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) 单击顶部栏中的“开始”按钮来执行代码。您应该得到以下内容:
以下是代码截图:
代码说明:
- 创建一个名为 Module1 的模块。
- 主要子程序的开始。
- 错误处理代码的开始。
- 抛出异常对象。此代码可能会生成异常,因此我们用 Try/Catch 块将其包围。
- 如果该行引发异常,则将异常作为对象 ex 捕获。
- 一旦发生异常,则在控制台上打印异常消息。
- 无论是否捕获到异常,Finally 块都会运行。
- 执行 Finally 块时在控制台上打印的消息。
- 异常处理代码结束。
- 暂停控制台一段时间,等待用户采取行动将其关闭。
- 主要子程序结束。
- 模块结束。
总结
- 异常是指程序执行过程中,由于意外的情况而引起的问题。
- 如果您怀疑某些代码会产生异常,请用 Try/Catch 块将其括起来。
- Finally 块位于 Try/Catch 块之后,无论是否捕获到异常都会执行。
- VB.Net 允许我们创建自定义异常。