2016-11-08 44 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; 

也许

相关问题