VB.NET异常处理技术浅析

来源 :成才之路 | 被引量 : 0次 | 上传用户:wl349682847
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:本文主要探讨了VB.NET中错误与异常的概念,结合Error对象和Exception对象的使用描述常用的异常处理技术,并结合VB.NET程序代码对非结构化和结构化异常处理进行比较总结。
  关键词:VB.NET;程序错误与异常;异常处理技术
  
  1. 错误与异常概述
  在使用VB.NET开发程序软件的过程中,随着程序代码的增长,在程序中不可避免地会产生一些错误,这些错误一般可以分为三类:语法错误、逻辑错误和运行时错误。
  (1)语法错误:这类错误最容易发现,VS.NET会在包含错误的代码下面使用波浪线标志错误,提示程序员语法错误发生的地点,并给出错误原因的相关信息,而且错误信息会在“任务列表”窗口中显示出来。
  (2)逻辑错误:这类错误是指程序运行正常但产生的结果却和预期的不一样。这类错误往往是由于程序员的逻辑思维混淆所导致的。
  (3)运行时错误:这类错误往往是程序试图执行的操作由于某些原因不可能被执行,例如当用户试图去打开一个不存在的文件,或者试图去将一个字符类型的数据输入到数据库中一个非字符类型的字段中。
  上述错误是指在程序执行代码过程中发生的事件,在NET框架中错误的产生将中断程序代码的正常流程,并创建一个异常对象来表示这个错误。当错误中断程序流程时,该程序将尝试寻找异常处理程序(一段告诉程序如何对错误做出响应的代码),以帮助程序恢复流程。从这里可以看出:错误是一个事件,而异常是该事件创建的对象;在异常产生时,异常处理程序能捕获异常并进行相应的操作,以增加程序运行的稳定性和可靠性。
  在VB.NET中有两种异常处理技术:第一种是非结构化异常处理技术,它是早期VB版本中的异常处理技术,在非结构化异常处理中,代码开始处的On Error 语句将处理所有的异常。第二种是结构化异常处理技术,类似于C#中的异常处理方式,它使用包含异常、单独的代码块和筛选器的控制结构创建异常处理机制。它使代码可以区分不同的错误类别,并根据相应的情况做出响应。与非结构化异常处理技术相比,结构化异常处理技术更强大,更具普遍性和灵活性。
  2. 异常处理的方法
  (1)非结构化异常处理。非结构化异常处理主要通过Err对象和以下语句来实现:On Error、Resume 和Err对象。On Error 语句用于创建单个异常处理程序以捕捉发生的所有异常,但一次只能有一个处理程序。此方法可以跟踪最近产生的异常和最近的异常处理程序的位置。在On Error开始时,Err对象被设置为Nothing。在程序运行过程中产生错误时Err对象被赋值,如果有多个错误产生,Err对象属性的值仅由刚刚发生的错误决定。每次在错误处理例程中发生Exit Sub、Exit Function、Exit Property、Resume 或Resume Next 语句时,Err 对象的属性都将重置为零或零长度字符串。而在错误处理例程外部使用上述任何语句都不会重置其属性。如果确实需要重置属性,可以使用Clear方法重置Err对象。
  (2)结构化异常处理。在VB.NET中使用Try、Catch、Finally关键字提供结构化异常处理功能。在Try代码块中包含可能产生异常的代码段,它还可以和一个或多个Catch子句配合使用。这些Catch子句主要用来过滤异常并将它们和对应异常处理代码建立关联。最后无论在Try代码块中是否发生异常,Finally 语句所包含的代码始终会被执行,即使在Exit Try语句后也会执行Finally语句。Finally语句块通常执行清除任务,例如文件的关闭或解除对数据库中表的锁定等。
  Catch子句可以采用三种格式:Catch、Catch...As 和Catch...When。Catch...As 和Catch...When 子句用于捕获特定的异常,并在后面的语句块中进行异常处理。VB.NET按照Catch...As(When)子句的顺序把当前捕获的异常类型和Catch...As(When)子句中列出的所有异常逐一进行比较,直到找到一个相匹配的。如果在所有的Catch...As(When)子句中没有找到匹配的异常类型,最后将执行不包含as(When)的Catch子句。也就是说最后这个Catch子句可以捕获所有的异常。需要注意的是:当使用多个Catch...As(When)子句捕获异常时,所有的Catch...As(When)子句都是按出现的先后顺序依次进行匹配,所以应该根据异常对象的层次结构,将低级别的异常放在Catch...As(When)子句的最前面,然后才是通用的异常,最后是不包含as(When)的Catch子句。
   (3)创建自定义的异常。在VB.NET中可以通过从Application.Exception类中继承,来创建自己的应用程序异常类。建议异常类的名称以Exception结尾。
  3. 非结构化和结构化异常处理技术对比
  在使用非结构化异常技术处理异常时,可能产生程序代码执行的跳转,而且在非结构化异常处理中使用Err对象仅能获得最近产生的错误信息,但代码在执行过程中可能不只产生一处错误,从而使得已经发生的错误信息丢失。结构化异常处理技术采用Try...Catch...Finally控制结构作为结构化异常处理的基本结构,在处理异常时不会产生跳转。而且可以根据所产生的异常类型的不同分别做出不同的处理。通常情况下,结构化异常处理技术提供了能够更加灵活地处理错误的功能,在实际中得到广泛应用。但在少数情况下仍然可能需要使用非结构化异常处理。
  从上述对结构化和非结构化异常处理技术的描述,可以看出,结构化异常处理的功能比非结构化异常处理的功能更强大。需要注意的是由于抛出和捕获异常会增加应用程序的负荷,因此,在确保异常得到处理的同时,不要过多地列举异常,否则会导致程序性能下降。另外当可以肯定地知道代码在此处会出现什么错误时可以使用if...else...进行处理。例如:检测用户输入数据的类型等。在不能确定程序代码会在什么位置出现什么类型的错误时,使用Try...Catch可以对错误进行有效地处理,提高程序的健壮性。例如:I/O操作等。
  
  参考文献:
   [1] Microsoft.VB.NET程序设计语言【M】.高等教育出版社,2003.
  [2] Fred Barwell VB.NET高级编程.清华大学出版社,2002.
其他文献
摘要:《机械制图》和《Auto-CAD》是现代高等工科院校的两门基础课程。这两门课程的实践性较强,对学生的空间想象能力要求较高,因此使学生难以入手。本文把两门课程相结合,通过两者内容上的相互渗透和紧密结合,使学生可以更好地培养自己的空间想象能力以及知识的综合运用能力,从而简单有效地完成对这两门课程的学习。   关键词:机械制图;CAD;课程整合;空间想象力     一、引言    对于多数工科院校
〔摘要〕从小学到初中,随着青春期生理心理的变化、学习压力的增加和学习方式的改变,对学生的独立能力、人际沟通的能力有所要求,特别是住宿制学校,入学适应成为了初一学生普遍遇到的挑战。本案例中的来访者,对上学有恐惧和焦虑情绪,与同学缺乏有效交流,伴有失眠、冒冷汗、心慌等躯体化反应。咨询师通过房树人心理测验,运用意象对话技术、CBT认知行为分析,巧妙处理移情,帮助来访者驱赶心中的恐惧,适应正常的学校生活。
〔摘要〕 心理健康是人可持续发展的重要条件,在学校教育中,心理健康教育已成为重要的教育课程。小学生心理健康教育是一项科学性、实践性很强的教育工作,在“微时代”,小学生心理健康教育工作也应从“微”入手,“微观察”“微联络”“微沟通”“微辅导”等都是做好农村小学留守儿童心理健康教育的有效途径。  〔关键词〕留守儿童;心理健康;家校合作  〔中图分类号〕G44 〔文献标识码〕B 〔文章编号〕1671-2
〔摘要〕随着二胎政策的推行,越来越多二胎家庭出现,二胎家庭中的问题随之显现。本文通过案例研究,解析二胎家庭中“老大”的心理困境,并结合自身实践,探究解决困境之道,使“老大”成功实现角色转变,适应二胎家庭,获得应有发展。  〔关键词〕二胎家庭;老大;心理发展  〔中图分类号〕G44 〔文献标识码〕B 〔文章编号〕1671-2684(2018)02-0057-04  从国家实施“单独二胎”政策到如今全
〔摘要〕人际关系是影响学生心理健康的重要因素之一。现实生活中很多学生都有来自人际冲突的痛苦和压力。本课为学生处理人际关系提供了一个思路:退一步海阔天空,学会宽容。通过小组合作的方式增强学生的参与和互动意识,案例呈现,情境体验中感受宽容的力量,最终习得宽容待人的心理品质。  〔关键词〕人际冲突;化解;宽容  〔中图分类号〕G44 〔文献标识码〕B 〔文章编号〕1671-2684(2018)10-00
一、教学目标    (1)能通过观察地球仪了解其基本构造,掌握经纬线,经纬度的特点;  (2)学会利用经纬网确定某一地点的地理位置;  (3)知道南北半球、东西半球、经纬度带的划分。  学习社会知识,地理知识是必不可少的,学习地理知识,必然要掌握地球仪的知识,因此必须从经纬线、经纬线的方向、如何确定某一地点的地理位置等等基础知识学起。    二、教学设计    此教学内容是社会内容中比较重要的内容
〔关键词〕高中生;生涯价值观;活动设计  〔中图分类号〕G44 〔文献标识码〕B  〔文章编号〕1671-2684(2020)04-0025-03  【活动理念】  积极心理学主张人类用一种积极的心态面对人的心理现象,并以此激发每个人自身现有的或潜在的积极品质和积极力量,从而使每个人都能走向成功的彼岸并获得属于自己的幸福。体验式学习理念强调教师的作用在于为学生提供丰富的学习情境,启发思考,寓教
李 茂编译  呼吁建立真正的学习科学,将情感调控引入课程。根据OECD(经合组织)2007年7月发布的一份最新报告,人脑从来不会失去它的学习能力。而“人脑所有最重要的发育在3岁之前结束”的说法也是错误的。不仅学习永不停止,而且学习还能在生理上改变人脑。  这份报告题为《理解脑:学习科学的诞生》,是OECD教育研究与创新中心(CERI)“学习科学与脑研究”计划的一部分。该计划于1999年启动,旨在根
摘要:许多中小学生的人际交往陷入误区,原因何在?本文通过典型案例生动而深刻地说明,人们心中的“疤痕”,强烈地影响着人们对外界的感知。因此很多时候,我们听到的往往是我们想听到的,学生们也是这样。本文结合案例辅导提出,人身上的许多特点都是中性的,不能简单地说成是缺点。所以,应该指导学生们学会对自己身上的特点积极赋义,学会从积极角度看自己,学会喜欢自己。  关键词:心理投射;选择性注意;积极赋义  中图
摘要:水利工程屬于利国利民的项目,需要充分关注施工技术要点,结合时代发展步伐创新施工技术,提升施工质量,保证人民生命财产安全。本文围绕边坡施工、防渗墙等方面分析水利工程建筑施工技术要点,为现代化水利工程建筑施工提供指导,提升水利工程经济效益和社会效益,保障工程的有序、顺利进行。  关键词:水利工程;边坡施工;垂直度;防渗墙  水利工程建设显著提升了人们的生活质量和社会经济发展水平,当前工程施工技术