我试图通过使用非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());
}
}
答案 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;
也许