快速业务通道

在ASP.NET 2.0中实现异常管理

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
SqlConnection("");
try
{
  conn.Open();
  // some operation
  // some additional operations
}
catch(Exception ex)
{
  // handle the exception
}
finally
{
  if (conn != null && conn.State == ConnectionState.Open)
conn.Close(); // closing the connection
}

尽可能的用校验代码而避免使用异常。如果你知道一个可避免的条件可能会 出现,那就让它避免。比如,在执行任何操作以前,检查空值(VB里是Nothing ),这样可以避免使用异常以及性能问题。

以下代码:

double result = 0;
  try
  {
result = firstVal/secondVal;
  }
  catch(System.Exception e)
  {
// handling the zero divided exception
}

应该替换成:

double result = 0;
if(secondVal != null && secondVal > 0)
{
  result = firstVal/secondVal;
}
else
{
  result = System.Double.NaN;
}

不要为没有必要的情况(原文:reasons)抛出异常。再次抛出异常的开销和 实例化一个新异常的开销一样的大,同时再次抛出异常使程序调试工作增加难度 。比如:

try
{
  // Perform some operations ,in case of throw an exception…
}
catch (Exception e)
{
  // Try to handle the exception with e
  throw;
}

推荐的处理不同的错误的不同的方法是实现一系列的catch块,这看起来好像 没有什么,但可以让你的异常处理从特殊走向普通。比如捕获一个和文件有关的 异常明显要比捕获一个FileNotFoundException, DirectoryNotFoundException, SecurityException, IOException, UnauthorizedAccessException甚至最后的 基类Exception,好的多。

ADO.NET 的错误应该通过 SqlException 或 OleDbException来处理。

使用ConnectionState属性来检查连接是否可用要比异常处理好的多。

要常使用Try/Finally,Finally提供了关闭连接的机会。Using语句可以达到 同样的效果。

用指定的处理程序来处理异常。在一些情况下如果你知道一些可能的异常那 就用相应的异常处理类,比如:

try
{}
catch(SqlException sqlexp) // specific exception handler
{}
catch(Exception ex) // Generic exception handler
{}

你的异常处理架构应该可以探测异常并在内部将其覆盖,(或是)使用其它 异常将其替换,或是为监视系统而记录和报告这些信息。

推荐大家使用 Microsoft''s patterns & practices 团队 提供的 Exception Management Application Block。这是一个简单且可扩展的框架用于 记录异常信息到事件文件中,你可以自定义它,把日志记录到其它数据源中同时 不影响你系统的代码。Exception Management Application Block都是一些由 patterns & practices团队开发的很好的代码,并且已经彻底地被 Microsoft labs给测试过了。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号