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

VB.NET 异常处理及抛出异常,第1张

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

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

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

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

[HTML] view plain copy Try '程序代码 Catch '处理异常的代码 Finally '清理工作 EndTry

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

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

异常处理的代码实例:

copy PrivateSubFirstTryCatchbutton_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesFirstTryCatchbutton.Click DimsngAvgAsSingle sngAvg=GetAverage(0,100) EndSub PrivateFunctionGetAverage(ByValiItemsAsInteger,ByValiTotalAsInteger)AsSingle 'CodethatmightthrowanexceptioniswrappedinaTryblock Try DimsngAverageAsSingle 'ThiswillcauseanexceptiontobethrownifiItems=0 sngAverage=CSng(iTotal\iItems) 'Thisonlyexecutesifthelineabovegeneratednoerror MessageBox.Show("Calculationsuccessful") ReturnsngAverage CatchexcGenericAsException 'IfthecalculationFailed,yougethere MessageBox.Show("Calculationunsuccessful-exceptioncaught") Return0 EndTry EndFunction 二、抛出异常

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

copy PrivateSubThrowNewExceptionbutton_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesThrowNewExceptionbutton.Click Try DimsngAvgAsSingle sngAvg=GetAverage4(0,100) CatchexcAsException MessageBox.Show(exc.Message) MessageBox.Show("Finallyblockinclickevent") EndSub PrivateFunctionGetAverage4(ByValiItemsAsInteger,ByValiTotalAsInteger)AsSingle IfiItems=0Then DimexcOurOwnExceptionAsNewArgumentException("Numberofitemscannotbezero") ThrowexcOurOwnException EndIf EndFunction 总结

以上是内存溢出为你收集整理的VB.NET 异常处理及抛出异常全部内容,希望文章能够帮你解决VB.NET 异常处理及抛出异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1268540.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存