【问题标题】:Which exception does SMO Transfer Raise?SMO 转移会引发哪个例外?
【发布时间】:2011-03-22 16:03:31
【问题描述】:

使用此代码时

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

异常总是被第二个 catch 语句捕获。 有人知道为什么会这样吗?

提前致谢

【问题讨论】:

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


    【解决方案1】:

    使用它来确定您实际得到的异常是什么:

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

    【讨论】:

    • 谢谢,我会试试这个,让你知道
    • TransferException -> 使用 Microsoft.SqlServer.Management.Common;谢谢!
    【解决方案2】:

    发生这种情况是因为异常不是SmoException

    它要么是Exception,要么是从Exception 派生的另一个异常类型,但不是SmoException。如果SmoException 确实是SmoException 或派生自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

    【讨论】: