C# &引用;“安全地”;在数据表中查找具有特定字段值的行

C# &引用;“安全地”;在数据表中查找具有特定字段值的行,c#,.net,try-catch,C#,.net,Try Catch,我试图使用非pk字段中的值“安全地”获取一行 我可以使用try-and-catch让它工作,但是我想使用try-and-catch,这样如果字段名不存在或者它找不到任何具有该值的行,它就不会使应用程序崩溃 然而,这反过来又填充了该方法,因为它现在表示所有路径都不会返回值 这是我的密码: private DataRow getRowByFieldVal(DataSet DtaSet, string sorceTable, string fieldName, string fieldValue) {

我试图使用非pk字段中的值“安全地”获取一行 我可以使用try-and-catch让它工作,但是我想使用try-and-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());
    }
}

编译器正在询问
如果try块中有错误,您希望返回什么?

想象一个用例

try块中有一些错误,因此catch开始执行,但由于此函数必须返回某些内容。那么,在这种情况下,返回什么呢。它将是null还是使用
throw
抛出异常

所以你可以

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

您不应该为此使用try-catch。如果找不到具有指定值的行,可以使用If进行检查。Try-catch用于可能引发异常的块。而不是

return foundrows[0];
首先检查是否有,然后退回

但要回答您的问题,捕获块也需要返回

return null;
或许