SMO转移提升哪个例外?

时间:2011-03-22 16:03:32

标签: c# exception exception-handling try-catch smo

使用此代码时

try
{
    transfer.TransferData();
}
catch (SmoException smoex)
{
    //Do something
}
catch (Exception ex)
{
    //Do something else
}

异常始终由第二个catch语句捕获。 有人知道为什么会这样吗?

先谢谢

2 个答案:

答案 0 :(得分:1)

使用它来确定您实际获得的异常:

try
{
   transfer.TransferData();
}
catch (Exception ex)
{
    var theRealExceptionTypeName = ex.GetType().Name;
}

答案 1 :(得分:0)

这是因为异常不是SmoException

它是Exception或源自Exception的其他异常类型,但不是SmoExceptionSmoException将被第一个处理程序捕获,如果它真的是SmoException或派生自SmoException的类。希望这句话不像打字那样令人困惑!

进一步阅读例外和异常处理:

http://msdn.microsoft.com/en-us/library/ms173160(v=vs.80).aspx

文档没有说明抛出了什么异常:

http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.transfer.transferdata.aspx