2016-11-08 5 views
-1

Я пытаюсь получить строку, используя значение из поля не pk «безопасно» Я могу заставить его работать, но я хотел сделать это, используя 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 начинает выполняться, но поскольку эта функция должна что-то вернуть. Так что вернуться в этом случае. Будет ли это исключение null или throw, используя throw.

Так что вы можете сделать

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

Не следует использовать попробовать прилова для этого. Если он не найдет строку с указанным значением, вы можете проверить это с помощью if. Try-catch для блоков, которые могут генерировать исключение. Вместо

return foundrows[0]; 

сначала проверьте, есть ли, а затем верните его.

Но чтобы ответить на ваш вопрос, блок задвижка должен возвращать как хорошо

return null; 

возможно

Смежные вопросы