2011-07-25 27 views
4

我有一個Select方法連接到一個ObjectDatasource,這個方法可能會拋出異常,我不知道如何處理它!如何通過ObjectDatasource的Select方法拋出異常?

問題是我沒有控制它。當頁面呈現時,select方法直接由ObjectDatasource調用,並直接拋出未處理的異常。

另一方面,如果它有問題,我不想讓它返回空集合,因爲集合可能是空的而沒有問題。

那麼,我可以在哪裏處理異常?

還有其他的選擇嗎?

回答

9

只看ObjectDataSource控件EventArgs的。應該有一個e.Exception & e.Results,您可以查詢您的選擇的成功/錯誤。

protected void MyOds_Selected (object sender, ObjectDataSourceStatusEventArgs e) 
{ 
    if (e.Exception != null) 
    { 
     // handle exception here. 
... 
    //tell the ObjectDatasource that the exception is handled 
    //and don't rethrow it. 
    e.ExceptionHandled = true; 

    } 
} 
-1

如果我理解正確,你有一個頁面,在某個時候在ObjectDataSource上調用Select(),並且這個調用有時會失敗併產生異常。

現在你處理這個異常有點依賴於你的場景。一般而言,您應該嘗試處理例外情況,在的最早位置,這就是您可以在處做出某種有用的事情以迴應錯誤。例如,對於一個可能會將用戶重定向到錯誤頁面的網站。

請注意,儘管這個早期的意義可能會很晚,但如果您將用戶重定向到錯誤頁面,它可能會與UI(或頁面)層一樣高。你可能會在某個earier點嘗試捕獲異常和重試請求,如果失敗,重新拋出異常

對不起,vauge awnser,但它實際上取決於:)

2

您應該訂閱ObjectDataSource.Selected事件。

<asp:ObjectDataSource OnSelected="ObjectDataSourceStatusEventHandler" /> 

檢查在這種情況下例外,因爲@Kirill提到,可能隱藏GridView和顯示一些錯誤信息給用戶。檢查這個link