Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 35

Try-Catch. Как продолжить выполнение следующих команд за "проблемной"

20.03.2014, 15:34. Показов 2691. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
К примеру есть такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
try
{
    for (int index = 0; index < BodyData.Rows.Count; index++)
    {
        Time1= Time1+Convert.ToInt16(BodyData[0,index].Value);
        Time2= Time2+Convert.ToInt16(BodyData[1,index].Value);
        Time3= Time2+Convert.ToInt16(BodyData[2,index].Value);
    }
}
catch(Exception ex)
{
    MessageBox.Show(ex.ToString());
}
В нём если во 2 строке у 2 столбца, к примеру, будет что-то кроме чисел, то он не выдаст ошибку, но и всё что после идёт рассчитывать тоже не будет.
Это можно решить если сделать:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for (int index = 0; index < BodyData.Rows.Count; index++)
{
    try
    {
    Time1= Time1+Convert.ToInt16(BodyData[0,index].Value);
    catch
    {
    }
    try
    {
    Time2= Time2+Convert.ToInt16(BodyData[1,index].Value);
    catch
    {
    }
    try
    {
    Time3= Time3+Convert.ToInt16(BodyData[2,index].Value);
    catch
    {
    }
}
Но данный вариант несколько напряжен в написании, особенно если таких "Time" 10 и больше...
Как можно решить данную проблему?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.03.2014, 15:34
Ответы с готовыми решениями:

Как завершить приложение в батники и продолжить выполнение команд батника?
После того как приложение quickbms.exe выполнило свою задачу, предложение об удалении или сохранении файлов не поступило, как следует в...

Как продолжить If Then Else через несколько команд?
if a = '1' then writeln('2'); sleep(3000); write('.'); sleep(600); else else не принимает. Требует...

Как продолжить выполнение программы?
Необходимо запустить wav файл и продолжить выполнение программы. PlaySound(TEXT(&quot;1.wav&quot;), NULL, SND_ALIAS | SND_APPLICATION); ...

12
311 / 309 / 125
Регистрация: 29.01.2013
Сообщений: 638
Записей в блоге: 1
20.03.2014, 15:40
Но данный вариант несколько напряжен в написании, особенно если таких "Time" 10 и больше...
а использование 10 таких таймов само по себе не напряжно? Организуйте массив что ли, и конструкцию try используйте в теле цикла...
0
 Аватар для golandy
73 / 73 / 20
Регистрация: 11.01.2014
Сообщений: 252
Записей в блоге: 2
20.03.2014, 15:44
Лучший ответ Сообщение было отмечено kostya05 как решение

Решение

обратите внимание на tryparse.

C#
1
2
int ret;
int.TryParse("t", out ret);
переменная ret будет заполена только если число конвертить.
1
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
20.03.2014, 15:50
Цитата Сообщение от golandy Посмотреть сообщение
переменная ret будет заполена только если число конвертить.
Заполнена она будет в любом случае. Вопрос — чем
1
 Аватар для golandy
73 / 73 / 20
Регистрация: 11.01.2014
Сообщений: 252
Записей в блоге: 2
20.03.2014, 15:57
Цитата Сообщение от kolorotur Посмотреть сообщение
Заполнена она будет в любом случае. Вопрос — чем
в случае неуспешного выполнения 0 и при сложении никак не повлияет, а при удаче то будет число. Но это как вариант. Можете что предложить другое?
P.S. по поводу заполнения может есть такое, но в msdn вроде про это ничего не написано.
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 35
20.03.2014, 16:03  [ТС]
Цитата Сообщение от golandy Посмотреть сообщение
C#
1
2
int ret;
int.TryParse("t", out ret);
Тут как я понял он заменит содержание ret новым значением, а как прибавить к старому новое значение?
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
20.03.2014, 16:05
Цитата Сообщение от golandy Посмотреть сообщение
Но это как вариант. Можете что предложить другое?
Да ваш вариант хороший и правильный.
Это я просто к слову "только" немного придрался
0
 Аватар для golandy
73 / 73 / 20
Регистрация: 11.01.2014
Сообщений: 252
Записей в блоге: 2
20.03.2014, 16:11
Цитата Сообщение от kostya05 Посмотреть сообщение
а как прибавить к старому новое значение?
Time2= Time2 + ret;

немного фантазии и все будет хорошо))

Добавлено через 1 минуту
kolorotur, а чем занимаетесь?
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 35
20.03.2014, 16:15  [ТС]
Цитата Сообщение от golandy Посмотреть сообщение
Time2= Time2 + ret;
немного фантазии и все будет хорошо))
надеялся избежать этого способа =(
0
 Аватар для golandy
73 / 73 / 20
Регистрация: 11.01.2014
Сообщений: 252
Записей в блоге: 2
20.03.2014, 16:17
у вас в for цикле добавится только три строки. У вас же была цель избавиться от трех try ... catch. Или еще что то не так?
0
0 / 0 / 0
Регистрация: 05.06.2012
Сообщений: 35
20.03.2014, 16:22  [ТС]
Цитата Сообщение от golandy Посмотреть сообщение
у вас в for цикле добавится только три строки. У вас же была цель избавиться от трех try ... catch. Или еще что то не так?
это да, но лень берёт своё xD
0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
20.03.2014, 16:43
kostya05,
Может такой подход приемлем:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
 
private int Converter(string str)
{
int num=0;
  try
  {
     num = Convert.ToInt16(str);
   }
 
   catch (Exception ex)
   { 
   }
 
 return num;
   }   
 
       
for (int index = 0; index < BodyData.Rows.Count; index++)
{
Time1 = Time1 + Converter(BodyData[0, index].Value);
Time2 = Time2 + Converter(BodyData[1, index].Value);
}
1
59 / 8 / 5
Регистрация: 30.01.2014
Сообщений: 41
20.03.2014, 17:17
Цитата Сообщение от kostya05 Посмотреть сообщение
Сообщение от golandy
Time2= Time2 + ret;
немного фантазии и все будет хорошо))
надеялся избежать этого способа =(
Time2 += ret;
если так лучше..
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.03.2014, 17:17
Помогаю со студенческими работами здесь

Как дождаться окончания процесса и продолжить выполнение
Из VBA запускается в командной строке скрипт на распаковку, затем некоторые распакованные файлы переименовываются. Так вот оно...

Как продолжить выполнение кода с другого места
Как сделать так чтобы при определённом условие выполнение кода продолжалось не со следущей строки, а к примеру с 1000 if (initstatus ==...

Как остановить ввод с клавиатуры и продолжить выполнение программы (C++)?
Возможно, это оффтоп, но я не нашел подходящей категории для моего вопроса, кроме того, я сижу на Arch Linux. Знаю, что для того, чтобы...

Как продолжить выполнение программы после обработки исключения?
Как вернуться к выполнению программы, если переменная был введена в неправильном формате? Где-то видел пример обработки исключения с...

Как продолжить выполнение программы после точки останова?
Допустим, я останавливаю выполнение программы на строчке (точка останова 1). Что нажать, чтобы программа просто продолжила выполняться, не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru