学了几天的vb.net了,没有太大的感觉,今天想对这几天的学习进行一下总结吧,可是心里也不知道学了些什么,哎,不过还是有信心学好的,翻了翻这几天在Onetnote中的笔记,发现捕获和抛出异常这需要总结一下,虽然我总结的知识面不是很大,可是总结一下,心里有些清晰了,加油!@H_301_3@@H_301_3@@H_403_5@
结构化异常处理是随着@H_301_3@.NET@H_301_3@的第一个版本的发行而加入到@H_301_3@VisualBasic@H_301_3@语言中的。结构化异常处理@H_301_3@ @H_301_3@与以前的@H_301_3@On ErrorGoto...@H_301_3@语句相比,通过使用一种与该语言其它部分更适应的语法从而使得代码更具有可读性@H_301_3@,@H_301_3@也@H_301_3@比以前的@H_301_3@On Error Goto...@H_301_3@语句功能更强,而且提供了更为灵活性的控制能力。@H_301_3@@H_301_3@@H_403_5@
@H_301_3@@H_403_5@
@H_301_3@捕获和抛出异常@H_301_3@@H_301_3@@H_403_5@
@H_301_3@@H_403_5@
异常处理是用@H_301_3@Try...Catch...Finally...End Try@H_301_3@语句实现的,其基本语法形式如下:@H_301_3@@H_301_3@@H_403_5@
@H_301_3@@H_403_5@
Try@H_301_3@@H_403_5@
'@H_301_3@能够引发一个异常的代码@H_301_3@@H_301_3@@H_403_5@
Catch@H_301_3@@H_403_5@
'@H_301_3@处理异常的代码@H_301_3@@H_301_3@@H_403_5@
Finally@H_301_3@@H_403_5@
'@H_301_3@实现清理工作的代码(如关闭数据库连接,等等)@H_301_3@@H_301_3@@H_403_5@
End Try@H_301_3@@H_403_5@
解析:@H_301_3@@H_301_3@@H_403_5@
Try@H_301_3@和@H_301_3@End Try@H_301_3@语句都是必需的。@H_301_3@Catch@H_301_3@和@H_301_3@Finally@H_301_3@语句可以共同使用于一个@H_301_3@Try@H_301_3@块中,但是至少使用其中之一。而且,可以使用多个@H_301_3@Catch@H_301_3@语句来处理不同类型的异常。如果你有多个@H_301_3@Catch@H_301_3@块,可以对它们加以排序:@H_301_3@@H_301_3@@H_403_5@
从最具体的异常类型到最粗略的异常类型:@H_301_3@@H_403_5@
Catch ex AsArgumentOutOfRangeException@H_301_3@@H_403_5@
'@H_301_3@有可能使用一个缺省值来处理一个无效参数以便使代码继续执行@H_301_3@@H_301_3@@H_403_5@
Catch ex As Exception@H_301_3@@H_403_5@
'@H_301_3@处理任何其它类型的异常@H_301_3@@H_301_3@@H_301_3@@H_403_5@
解析:@H_301_3@@H_301_3@@H_403_5@
你也可以在你的代码中抛出异常。当你在代码中执行一些清理工作时,捕获并抛出异常是很有用的@H_301_3@-@H_301_3@这样以来,一个更高层级的过程可以捕获它。当你创建定制异常类型时,抛出异常也很有用。@H_301_3@@H_301_3@@H_301_3@@H_403_5@
抛出一个异常,你可以编写如下形式的代码:@H_301_3@@H_403_5@
Throw NewArgumentOutOfRangeException@H_301_3@@H_403_5@
@H_301_3@@H_403_5@
解析:@H_301_3@@H_301_3@@H_403_5@
ArgumentOutOfRangeException@H_301_3@告诉@H_301_3@Throw@H_301_3@语句要抛出什么类型的异常。这个@H_301_3@ArgumentOutOfRangeException@H_301_3@类型仅是@H_301_3@.NET@H_301_3@框架所提供的众多的类型之一。@H_301_3@@H_301_3@@H_403_5@