当前位置:   article > 正文

VB.NET异常处理及抛出异常

vb.net try catch 抛出异常 返回代码行数

异常处理是.NET平台重要的安全机制,它将错误代码的接受和处理的进行了完美的分离,理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解,而且还提供了处理程序运行时出现的任何意外或异常情况的方法。在.NET平台中异常处理使用 try、catch 和 finally 关键字来尝试可能未成功的操作,处理失败,以及在事后清理资源。异常处理(又称为错误处理)功能。与传统VB6.0中的On Error语句相比.NET平台的异常处理机制更加灵活,而且使用更加方便。

一、异常处理的三个语句块

.NET平台中异常处理主要是由try/catch/finally三个语句块构成,try块负责错误代码的捕获,catch进行错误的处理,finally负责错误处理后的后续工作如:释放对象、清理资源等的工作。

  1. Try
  2. '程序代码
  3. Catch
  4. '处理异常的代码
  5. Finally
  6. '清理工作
  7. End Try

在上面的语句块中Try和Finally语句块是必须运行的,但是Catch语句块不一定运行,如果Try块内的代码没有错误,没有抛出异常的话,Catch语句块中的代码是不运行的,而是跳过Catch块直接运行Finally块中的清理工作。反之如果遇到了异常Catch语句块中的处理工作就要进行。

为什么要在Finally块中进行清理工作?简单的说一个程序的异常会导致程序不能正常完成结束工作,而且在错误出现的地方跳出程序,直接执行Catch语句块中的代码,使得在程序运行时构建的对象资源不能释放,浪费了内存资源,同时也可能导致栈中数据存储的杂乱,所以无论有没有出现异常Finally块中的代码是一定会运行的。

异常处理的代码实例:

  1. Private Sub FirstTryCatchButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FirstTryCatchButton.Click
  2. Dim sngAvg As Single
  3. sngAvg = GetAverage(0, 100)
  4. End Sub
  5. Private Function GetAverage(ByVal iItems As Integer, ByVal iTotal As Integer) As Single
  6. ' Code that might throw an exception is wrapped in a Try block
  7. Try
  8. Dim sngAverage As Single
  9. ' This will cause an exception to be thrown if iItems = 0
  10. sngAverage = CSng(iTotal \ iItems)
  11. ' This only executes if the line above generated no error
  12. MessageBox.Show("Calculation successful")
  13. Return sngAverage
  14. Catch excGeneric As Exception
  15. ' If the calculation failed, you get here
  16. MessageBox.Show("Calculation unsuccessful - exception caught")
  17. Return 0
  18. End Try
  19. End Function

二、抛出异常

我们知道在程序中出现异常会导致提前跳出程序,同样抛出异常也是跳出程序代码,直接运行Catch块中的内容。抛出异常不仅可以应用在程序代码出现错误时,我们还可以使用抛出异常的机制来捕获一个过程或一个函数中出现异常值的情况,可以把这种方法看做是一个函数返回一个特殊值,通过上层函数来捕获程序中遇到异常的情况。VB.NET使用Throw关键字来在程序中抛出异常,让调用这个函数的上级调用函数进行处理。

  1. Private Sub ThrowNewExceptionButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ThrowNewExceptionButton.Click
  2. Try
  3. Dim sngAvg As Single
  4. sngAvg = GetAverage4(0, 100)
  5. Catch exc As Exception
  6. MessageBox.Show(exc.Message)
  7. Finally
  8. MessageBox.Show("Finally block in click event")
  9. End Try
  10. End Sub
  11. Private Function GetAverage4(ByVal iItems As Integer, ByVal iTotal As Integer) As Single
  12. If iItems = 0 Then
  13. Dim excOurOwnException As New ArgumentException("Number of items cannot be zero")
  14. Throw excOurOwnException
  15. End If
  16. End Function




声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/86094
推荐阅读
相关标签
  

闽ICP备14008679号