2010-09-20 129 views
1

我有以下由其他人編寫的函數,但是我正在重寫這個應用程序,我只是想知道是否沒有更好的方法來執行異常處理,除了返回最初傳遞的內容的功能?ADO和異常處理

CComVariant GetFldVar(ADO_RsPtr rs, long nIndex, CComVariant def) 
{ 
    try 
    { 
     return rs->GetFields()->GetItem(nIndex)->GetValue(); 
    } 
    catch (...) 
    { 
     return def; // catch exception and just return old variable?? Is that the right way to go about things?? 
    } 
} 

回答

0

默認值似乎是默認值,即函數試圖獲得第n列出了當前行的(RS),如果失敗,則返回默認值。我不認爲這是一個錯誤,而是一個特殊的用例。這是一個相當標準的模式,允許調用者避免檢查缺失的值。從數據庫中,並指定一個默認值作爲後備。

話雖如此,它可能是一個錯誤,因爲它吞噬serisous錯誤,但也許代碼被寫入,以便調用方可以繼續,無論如何ADO調用結果。

0

傳遞給函數的內容是調用者認爲它是一個正確的默認值(甚至是錯誤指示)值。呼叫者現在有責任檢查結果並確定要做什麼。事情是這樣,他/她無法知道發生了什麼樣的錯誤。他可以檢查連接的Errors集合,但它們只是ADO錯誤(儘管我不認爲此代碼有其他類型錯誤的空間)。除此之外,在我看來,這很好。