关闭

VB.NET 异常处理

2974人阅读 评论(30) 收藏 举报
分类:

   在项目开发中,错误和异常是不可避免的。为了尽可能多的避免类似情况,VB.net中提供了一种异常处理机制,允许开发者捕捉程序运行时可能出现的异常。 


   我们在学习VB6.0的时候,学到ONError的错误语句。与传统VB6.0中的OnError语句相比.NET平台的异常处理机制更加灵活,而且使用更加方便。异常处理分离了接收和处理错误代码。这个功能理清了编程者的思绪,也帮助代码增强了可读性,方便维护者的阅读和理解。

 一、异常处理Try...Catch...Finally


 Try
    '该语句能够引发一个异常的代码

        Catch ex As Exception
    '用来对捕获的错误进行处理

        Finally
    '存放异常处理后执行的代码(如关闭数据库连接等)

    End Try

   在上述语句中,Try语句块通常存放的是我们需要检测可能存在异常情况的代码,也就是说如果程序正确,则执行Try语句块,Catch语句块负责捕捉到错误的代码。所以当这段代码在执行过程中产生异常,则转到Catch块中对该异常进行相应处理。最后,无论是否引发异常,Finally块中的代码最后一定会被执行。 Finaly块用于清除try块中分配的任何资源以及运行任何即使在发生异常时也必须执行的代码。Catch和Finally语句可以共同使用于一个Try块中。  


示例如下:

Private Sub butnTest_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim i As Integer = 4
        Dim j As Integer = 0
        TextBox1.Text = GetTry(i, j)

    End Sub

    Private Function GetTry(ByVal a As Integer, b As Integer) As Integer
        Dim c As Integer
        Try
            c = a \ b
            MsgBox("运算正确!")        '若是b不为零,则执行返回C 
            Return c
        Catch ex As Exception           'b为零,执行此代码
            MsgBox("除数不能为0!")
        End Try
    End Function


二、自定义抛出类型

   当程序出现异常状况时会导致系统提前跳出该程序,运用Catch捕捉异常,可使我们继续执行Catch的内容。try...catch 捕获的是系统自行检测出来的错误。如果我们需要自定义一些错误,例如检测到了卡号不存在等错误的时候,我们可以使用Throw 关键字来在程序中抛出异常。


   Throw关键字通常用于方法体中,并且抛出一个异常对象,如果一个方法没有捕获可能引发的异常,调用该方法的其他方法应该捕获并处理异常。程序在执行到throw语句时立即终止,它后面的语句都不执行。通过throw抛出异常后,如果想在上一级代码中来捕获并处理异常,则需要在抛出异常的方法中使用throws关键字在方法的声明中指明要抛出的异常;如果要捕捉throw抛出的异常,则必须使用try-catch语句。例如:


Private Sub butnTest_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Try
            Dim i As Integer = 4
            Dim j As Integer = 0
            TextBox1.Text = GetTry(i, j)

        Catch ex As Exception
            MsgBox("除数不能为0", vbOKOnly + vbInformation, "系统消息")

        Finally
            MsgBox("结束测试")

        End Try
      

    End Sub

    Private Function GetTry(ByVal a As Integer, b As Integer) As Integer

        If b = 0 Then
            Dim excOurOwnException As New ArgumentException("除数不能为0")      '抛出自定义异常
            Throw excOurOwnException
        End If

    End Function

   这次机房合作中,在B层和U层进行逻辑判断的时候,运用到了很多异常处理,VB.NET 结构化异常处理提供了很好的灵活性,保证我们的程序稳定可靠的运行,对于异常处理我们应该合理的利用。 

7
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

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

异常处理是.NET平台重要的安全机制,它将错误代码的接受和处理的进行了完美的分离,理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解,而且还提供了处理程序运行时出现的任何意外或异常情...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013-05-19 21:57
  • 13560

vb.net全局错误全局异常处理捕获

  • 2017-07-16 18:10
  • 225KB
  • 下载

c#全局异常捕获

  • 2014-10-10 08:21
  • 4KB
  • 下载

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

异常处理是.NET平台重要的安全机制,它将错误代码的接受和处理的进行了完美的分离,理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解,而且还提供了处理程序运行时出现的任何意外或异常情...
  • zhang_xinxiu
  • zhang_xinxiu
  • 2013-05-19 21:57
  • 13560

重构机房收费系统你要用的——异常处理和抛出异常(try catch finally)——(vb.net)

你能保证你的程序不会出问题吗? 不能 当你的程序运行到某个地方发生了你不想要的结果,你是否想让它一错再错? 不想 你是否想让你的程序占着茅坑不拉屎? 不想 你是否想知道你的程序出错的原因?...
  • asd19920126
  • asd19920126
  • 2014-05-18 09:11
  • 4546

vb.net 的异步处理

 按照我们常规的思维方式,计算机应该是干完一件事,然后再干下一件。用术语来说,这种执行任务的方式叫做同步执行(Synchronous Execution)。既然这样,那么为什么要引入异步执行的概...
  • action20
  • action20
  • 2014-02-26 13:26
  • 1441

vb.net全局错误全局异常处理捕获

  • 2017-07-16 18:10
  • 225KB
  • 下载

VB.NET版机房收费系统---异常处理

异常处理,英文名为Exceptional Handling, 那是年少,还记得那年一起学习过的VB6.0的时候,常常使用ONError的错误语句。与传统VB6.0中的OnError语句相比.NET平台...
  • u010850027
  • u010850027
  • 2014-06-18 11:10
  • 2400

【VB.net】多线程和异常处理

VB.NET与VB          伴随着编程语言的发展,不断有新语言在产生和发展。我们较早接触的可能是Visual  Basic,它是一种非常流行的语言,建立在Basic语言的基础上。2002年...
  • LJL55555
  • LJL55555
  • 2017-01-20 19:28
  • 997

VB.NET异常处理

在实际编程中,经常会发生错误。一旦发生错误,必须快速发现错误,同时找到正确的解决方法。在VB.NET开发环境中,提供的资源能够快速的找到错误原因,改正错误。 一、错误类型 1.语法错误 ...
  • XUJIAOlf
  • XUJIAOlf
  • 2013-05-16 19:12
  • 1374
    个人资料
    • 访问:265619次
    • 积分:7809
    • 等级:
    • 排名:第3130名
    • 原创:176篇
    • 转载:4篇
    • 译文:0篇
    • 评论:2239条
    最新评论