Использовать try catch в C#?
Привет этому методу я хочу сделать попытку поймать блог.
Правда ли, что я использую try catch таким образом? если условие истинно, то попытка не является ошибкой.
public void Insert() { DataTable table= Dbc.GetDataTable( "select //sql command continue where ıd>3 ,commandtype.text ); if(table.rows.count>0) { List<int> List=(from row in table select //sql command continue)).ToList(); if(List.Count() != 2) { Complete(table); } DeleteFalse(); } }
Что я уже пробовал:
Я пробую код
public void Insert() { try{ DataTable table= Dbc.GetDataTable( "select //sql command continue where ıd>3 ,commandtype.text ); if(table.rows.count>0) { List<int> List=(from row in table select //sql command continue)).ToList(); if(List.Count() != 2) { Complete(table); } DeleteFalse(); } } catch (Exception exceptions) { Console.WriteLine("Error"); } }
Eric Lynch
Как правило, если у вас есть блок catch, вы должны сделать что-то с исключением. Есть много возможных действий, которые вы можете предпринять. Некоторые общие параметры включают регистрацию текста исключения, повторную попытку операции (для более специфических исключений, таких как тайм-аут) и возврат указания на то, что операция завершилась неудачно. Редко бывает хорошей идеей просто отбросить исключение (как это сделал бы ваш код "have tried").
Это может помочь, если вы улучшите свой вопрос, чтобы описать свою проблему немного лучше. Каковы были ваши ожидания от кода, который вы попробовали? Каким образом результаты, которые вы наблюдали, не оправдали этих ожиданий? Это неясно из вашего текущего вопроса, если вы просто изо всех сил пытаетесь понять try/catch или у вас есть какой-то конкретный, желаемый результат, который вам трудно реализовать.
[no name]
Привет, метод добавления делает мой процесс. Но я хочу, чтобы этот метод вернул ложный результат, который я хочу вернуть в catch. Так что этот метод уже запущен. Если это не сработает, я хочу попасть в ловушку. Спасибо за вашу помощь.
Eric Lynch
Извините, я немного запутался в ваших целях. Я думаю, что вы, возможно, неправильно понимаете несколько различных концепций.
В своем ответе вы указываете ожидание того, что ваш метод вернет "ложный результат". В настоящее время ваш метод не может вернуть никакого результата, он имеет тип "void". Если вы хотите, чтобы он возвращал результат true/false, вам нужно изменить его тип данных на "bool". Хотя, исходя из оставшейся части вашего предложения и вашего кода, кажется маловероятным, что это действительно ваше намерение.
Далее вы указываете, что хотите "вернуться к улову". Возможно, вы используете неточную терминологию, но это не совсем то, как работает "улов".
В разделе "have tried" вашего вопроса, если бы в блоке "try" произошла какая-либо ошибка (исключение), вы бы прекратили выполнение кода в этом блоке "try".
Вместо этого в этот момент вы начнете выполнять первую строку кода, содержащуюся в блоке "catch". Поскольку в настоящее время у вас нет кода в этом блоке "catch", вы ничего не будете делать. Фактически, вы отбрасываете (игнорируете) исключение. Затем вы перейдете к следующей строке кода после блока "catch".
Поскольку у вас нет кода после блока "catch", вы бы тогда ничего не вернули (void) из метода "Adding".
Хотя я совершенно уверен, что это не то, что вы намереваетесь, мне менее ясно, что вы намереваетесь.
Вместо того чтобы отвечать на мой комментарий, я снова предлагаю вам нажать кнопку "улучшить вопрос" и отредактировать свой вопрос, чтобы добавить больше деталей.
Вы должны быть конкретны по крайней мере в двух вещах:
1) что именно вы ожидаете/хотите сделать, если код в блоке "try" завершится успешно?
2) что именно вы ожидаете/хотите сделать, если код в блоке "try" потерпит неудачу? Это код, который вы хотите поместить в блок "catch".
В настоящее время, в случае неудачи, вы ничего не делаете. Кроме того, в случае успеха или неудачи вы ничего не возвращаете (void) из метода "Adding".
Имейте в виду, что ваш код может потерпеть неудачу практически в любой строке внутри блока "try". Например, это может произойти во время вашего SQL-запроса, или во время вашего вызова FonkA, или во время вашего вызова DeleteNonCorrectAdd. Любая из этих ошибок приведет к тому, что код "перескочит" на первую строку кода в вашем блоке "catch".