.NET中异常处理非常好的实践
不要重新创造轮子
有许多很好的框架和库来处理异常。其中的两个是微软提供的,我在这儿介绍以下:
• 异常管理应用模块
• 微软企业使用框架
尽管如此,值得注意的是如果你没有严格的按我所说的原则设计,上述的库则几乎是没用的。
VB.NET
如果你通读了本篇文章,你将会注意到我在此处书写的所有例子都是C#的。这是因为C#是我首选的语言,而VB.NET本身只有几个指导方针。
仿效C#的“using“陈述
不幸的是,VB.NET仍然没有using陈述。Whidbey拥有,但是直到它被释放。当你需要处理一个对象的时候,你应该使用如下样式:
Dim sw As StreamWriter = Nothing
Try
sw = New StreamWriter("C:\crivo.txt")
' Do something with sw
Finally
If Not sw is Nothing Then
sw.Dispose()
End if
End Finally
你调用Dispose时,如果你做一些其他事,可能你就在一些错事,直接导致你的代码出错或是资源泄漏。
不要使用无结构错误处理机制
无结构错误处理机制同时也被认为是On Error Goto。 1974年,Djikstra教授在撰写"Go To statement considered harmful" 时,非常擅长于此。不过那已是三十年前的事了!请尽快从你的应用程序中移除所有无结构错误处理的痕迹。我敢保证On Error Goto语句会对你不利。
结论
我希望这篇文章可以帮助某些人更好的编码。不仅仅是一些总结出来的经验,我希望这篇文章是讨论如何在我们的代码中使用异常,如何使我们的程序更健壮的起跑点。
我不认为我所写的这些没有任何错误和有争议的观点。非常乐意听到您关于此话题的意见和建议。
关于作者:
Daniel Turini:十一岁时开始开发软件。在过去的二十年中,他开发软件的同时使用了各种不同的机器和语言,从基于(ZX81,MSX)Z80到大型计算机。他仍然有研究ASM的激情,虽然从没有使用过它。从专业角度讲,Daniel Turini开发系统来管理大型数据库,这些数据库主要有Sybase 和SQL Server。他所写的大部分方法是面向金融市场,集中于信贷系统。
迄今为止,Daniel Turini已经学习了大约20种计算机语言。他十分迷恋C#语言和.NET框架,他非常善于做服务器端工作和可重复利用的组件。