留住异常的堆栈信息【throw ex 和 throw 的区别】

当我们想把框架底层的异常向上抛时(比如从DAL到BLL),例如下面的代码
try
{
   
//提交数据库
}
catch (System.Data.SqlClient.SqlException ex)
{
   
throw ex;
}
finally
{
   
//释放资源
}
上面代码的的问题在于,会造成CLR重新设置异常抛出的起点,导致我们在查看异常堆栈的时候,无法知道实际抛出异常的最底层的调用。
所以上面的代码应该使用throw关键字来向上抛出异常。




posted @ 2009-09-03 16:41  Cheese  阅读(737)  评论(0编辑  收藏  举报