2016-11-08 50 views
-1

我試圖通過使用非安全區域中的值「安全地」得到一行 我可以讓它工作,但是我想用try並捕獲,以便如果字段名稱不存在,或者找不到具有該值的任何行,則不會使應用程序崩潰。「安全地」查找具有特定字段值的數據表中的行

但是,這反過來又填塞了方法,因爲它現在聲明所有路徑都不返回值。

這裏是我的代碼:

private DataRow getRowByFieldVal(DataSet DtaSet, string sorceTable, string fieldName, string fieldValue) 
{ 
    try 
    { 
     DataRow[] foundRows = DtaSet.Tables[sorceTable].Select(fieldName + " = " + fieldValue); 
     return foundRows[0]; 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.ToString()); 
    } 
} 

回答

3

編譯器是要求What do you want to return if there is error in try block?

想象的使用情況。

在try塊中有一些錯誤,所以catch開始執行,但是因爲這個函數必須返回一些東西。那麼在這種情況下要返回什麼。它是否爲空或拋出異常使用throw

所以,你可以做

catch (Exception ex) 
{ 
    MessageBox.Show(ex.ToString()); 
    return null; //Add this line. 
} 
2

你不應該使用的try-catch這一點。如果它找不到具有指定值的行,則可以使用if來檢查該行。 Try-catch適用於可能會引發異常的塊。而不是

return foundrows[0]; 

首先檢查是否有任何,然後返回它。

但是,爲了回答你的問題,catch塊需要返回藏漢

return null; 

也許

相關問題