2011-03-22 78 views
1

雖然使用此代碼SMO Transfer Raise有哪些例外?

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

異常總是由第二catch語句捕獲。 有人知道爲什麼會發生這種情況嗎?

由於提前

回答

1

使用此來確定什麼異常,你實際上得到是:

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

謝謝我會試試這個,讓你知道 – 2011-03-23 07:23:49

+0

TransferException - >使用Microsoft.SqlServer.Management.Common; 謝謝! – 2011-03-23 09:05:50

0

這是因爲該異常不是一個SmoException

它可以是Exception或衍生自Exception的其他異常類型,但不是SmoException。如果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