VB.NET之错误异常处理

相对于VB而言,VB.NET中引入了很多特色。当中最吸引我的就是引入了结构化异常处理。

尽管VB.NET仍然支持OnError
Goto类型的异常处理,可是这样做并非非常好。相比而言,结构化异常处理更加灵活,使用更加方便。我们应该充分利用VB.NET提供的结构化异常处理。

在VB.NET结构中的异常处理分为3个语句块。

(1)try块负责错误代码的捕获

(2)catch进行错误的处理

(3)finally负责错误处理后的兴许工作如:释放对象、清理资源等的工作。

使用这些区块的目的是同意执行Try模块中被保护的代码,对catch,对catch区块中可能分不论什么错误做出反应。而且在随后的Finally块中还有清理代码。不管Try代码块是否有发生错误,Finally块的代码都会被执行到,这样能够非常方便的保证分配的资源会被释放,而且能够方便地提供那些不论错误控制细节怎样,都须要被执行的各种功能的函数。可是,Catch语句块不一定执行,假设Try块内的代码没有错误,没有抛出异常的话,Catch语句块中的代码是不执行的。而是跳过Catch块直接执行Finally块中的清理工作。

反之假设遇到了异常Catch语句块中的处理工作就要进行。

以下举个实例:

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim file As System.IO.FileStream, msg As String
        Try
            file = New System.IO.FileStream("D:\readme.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read)
            file.Close()
        Catch ex As Exception
            msg = String.Format("{0}ralsed exception :{1}", ex.Source, ex.Message)
            MessageBox.Show(msg, "My App", MessageBoxButtons.OK, MessageBoxIcon.Error)
        Finally
            If Not file Is Nothing Then file.Close()
        End Try
    End Sub

这个样例是在D盘找到一个readme.txt文档。假设我们在D盘中没有建立这个文档,那么就会运行Catch语句,会弹出出错的来源和原因:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMDUzOTM1Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" >

假设我们在D盘建立一个readme.txt文档。那么就不会有发生错误,那么不会运行Catch语句。跳到Finally中运行。

在如今,开发者经常忽视了组织有序。考虑周到的异常处理的重要性,经常导致用户的不便和失败。

我们将来假设要做合格的开发者,异常处理对我们来说是至关重要的。

它是.NET平台重要的安全机制,将错误代码的接受和处理的进行了完美的分离。理清了编程者的思绪,也帮助代码增强了可读性,方便了维护者的阅读和理解,并且还提供了处理程序执行时出现的不论什么意外或异常情况的方法。

时间: 2024-08-24 19:32:22

VB.NET之错误异常处理的相关文章

linux网络编程学习笔记之二 -----错误异常处理和各种碎碎(更新中)

errno 在unix系统中对大部分系统调用非正常返回时,通常返回值为-1,并设置全局变量errno(errno.h),如socket(), bind(), accept(), listen().erron存放一个正整数来保存上次出错的错误值. 对线程而言,每个线程都有专用的errno变量,不必考虑同步问题. strerror converts to English (Note: use strerror_r for thread safety) perror is simplified str

php中的错误异常处理

作者:小涵 | 阅读: 1636 在PHP5中添加了类似于其它语言的错误异常处理模块.在PHP代码中所产生的异常可被throw语句抛出并被catch语句捕获.需要进行异常处理的代码都必须放入 在PHP5中添加了类似于其它语言的错误异常处理模块.在 PHP代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获.需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常.每一个 try 至少要有一个与之对应的 catch.使用多个 catch 可以捕获不同的类所产生的异

EBS OAF开发中的错误/异常处理(ErrorHandling) (转)

原文地址 EBS OAF开发中的错误/异常处理(ErrorHandling) EBS OAF开发中的错误/异常处理(ErrorHandling) (版权声明,本人原创或者翻译的文章如需转载,如转载用于个人学习,请注明出处:否则请与本人联系,违者必究) 总览 这篇文档描述了如何在你的Model和控制器代码中抛出OAF 框架异常. 内容 l  异常类型 l  异常类 l  批量异常 l  异常示例 l  对话框页和消息对话框 异常类型 OAF框架处理三种基本类型的异常:常规(general),验证(

Java Web 错误/异常处理页面

发生服务器 500 异常,如果默认方式处理,则是将异常捕获之后调到 Tomcat 缺省的异常页面,如下图所示. 不论哪个网站都是一样的,所以为了满足自定义的需要,Tomcat 也允许自定义样式的.也就是在 web.xml 文件中配置: <error-page> <error-code>500</error-code> <location>/error.jsp</location> </error-page> 首先说说自带的逻辑.如果某

学习IOS--代码块(block)和错误异常处理的理解

1.Object C的代码块(block) Objective-C的代码块从刚刚学习的时候,感觉有点奇怪,慢慢感觉它在C#里面也有点熟悉,它在Objective-C里面的引入,好像是主要用来解决代码回调和同步调用的问题的,说到这里,如果熟悉C#的特性的,可能会联想到了C#里的Action<T>和Func<T>的概念了吧,没错,他们就是一丘之貉,哈哈. 代码块本质上是和其他变量类似.不同的是,代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到

PHP错误异常处理详解【转载】

异常处理(又称为错误处理)功能提供了处理程序运行时出现的错误或异常情况的方法. 异常处理通常是防止未知错误产生所采取的处理措施.异常处理的好处是你不用再绞尽脑汁去考虑各种错误,这为处理某一类错误提供了一个很有效的方法,使编程效率大大提高.当异常被触发时,通常会发生:          当前代码状态被保存         代码执行被切换到预定义的异常处理器函数          根据情况,处理器也许会从保存的代码状态重新开始执行代码,终止脚本执行,或从代码中另外的位置继续执行脚本 PHP 5 提供

C错误异常处理,异常处理

预处理器标识#error的目的是什么啊? 指令 用途 # 空指令,无任何效果 #include 包含一个源代码文件 #define 定义宏 #undef 取消已定义的宏 #if 如果给定条件为真,则编译下面代码 #ifdef 如果宏已经定义,则编译下面代码 #ifndef 如果宏没有定义,则编译下面代码 #elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码 #endif 结束一个#if……#else条件编译块 #error 停止编译并显示错误信息 #error是放到异常代码段

第八天:错误异常处理

错误类型 1.语法错误 SyntaxError:代码拼写出错 AttributeError:属性异常 try: x = 5 / 0 print(x) except ZeroDivisionError: print('不能除零') except: print('其他错误') else: print('没有异常') 2.语义错误 3.逻辑错误 二.异常处理 1.try:有可能出现异常代码 2.except:异常类型 as 实例:捕获特定异常 3.finally:不论是否遇到异常均会执行 class

Retrofit自定义GsonConverter处理请求错误异常处理

通常从服务端拿到的JSON数据格式大概如下: { "code":1, "message":"查询成功", "detail":{"aa":"123","bb":"123","cc":"123"} } 因此通常我们会定义一个实体类来解析对应的json: public class Response { @Seria