"安全"在数据表中查找具有特定字段值的行

时间:2016-11-08 07:12:37

标签: c# .net try-catch

我试图通过使用非pk字段中的值"安全地" 我可以让它工作,但我想使用try和catch来做到这一点,如果字段名称不存在或者它找不到任何具有该值的行,它将使应用程序崩溃。

然而,这又会影响方法,因为它现在声明所有途径都不会返回值。

这是我的代码:

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());
    }
}

2 个答案:

答案 0 :(得分:3)

编译器正在询问What do you want to return if there is error in try block?

想象一个用例。

try块中有一些错误,所以catch开始执行,但是因为这个函数必须返回一些东西。那么在这种情况下要返回什么。它是null还是使用throw抛出异常。

所以你可以做到

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

答案 1 :(得分:2)

你不应该使用try-catch。如果找不到具有指定值的行,则可以使用if检查该行。 Try-catch适用于可能引发异常的块。而不是

return foundrows[0];

首先检查是否有,然后返回。

但要回答你的问题,catch块还需要返回

return null;

也许