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

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




原文地址:https://www.cnblogs.com/Cheese_Ren/p/1559647.html