Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 668
1

Обработка try/ catch

11.10.2018, 16:54. Просмотров 1274. Ответов 5
Метки нет (Все метки)

С github.com парсятся данные.
В строке ошибка
C#
1
var repoLicen = client_cur.Repository.GetLicenseContents(instanceRepoId).Result; // ОШИБКА !!!
Ошибка
Кликните здесь для просмотра всего текста
System.AggregateException
HResult=0x80131500
Сообщение = Произошла одна или несколько ошибок.
Источник = mscorlib
Трассировка стека:
в System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
в System.Threading.Tasks.Task`1.GetResultCore(Boolean waitCompletionNotification)
в System.Threading.Tasks.Task`1.get_Result()
в rsh.Core.Grid_uc.<VarAddValue>d__11.MoveNext() в Z:\vs\csharp\prb\398\01_pr\01_pr\02_pr\rsh\Core\Grid_uc.cs:с трока 127

Внутреннее исключение 1:
NotFoundException: Not Found


Репозитарий на котором возникает ошибка- ссылка

Т.е. я так понимаю, что у него нет информации по лицензии.

Вопрос.
Как сделать чтобы программа пошла дальше по коду несмотря на ошибку ?


Код
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
for (int i = start; i < fin; i++)
{
    try
    {
        // Обращаемся к экземпляру репозитария
        var instanceRepo = resultRepo.Items[i];
        var instanceRepoId = instanceRepo.Id;
            
        #region *** Лицензия. Извлекаем данные ***
        var repoLicen = client_cur.Repository.GetLicenseContents(instanceRepoId).Result; // ОШИБКА !!!
        var licenVar = repoLicen.License.Name; //  в VAR перечислены все свойства (смотри при отладке)
 
        #endregion *** Лицензия ***
 
        //...
        // Переменные. Создаём
        //...
        //  Переменные. Присваиваем значение 
        //...           
        // DataTable. Добавляем строки
        //...
 
        // Отображаем DataTable ("RepoTable") в dataGridView1
        dataGridView1.DataSource = RepoTable;
                
    }
    catch 
    {                    
        return;
    }
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2018, 16:54
Ответы с готовыми решениями:

Обработка исключений Конструкция try.catch.finally
Добрые день, помогите пожалуйста Вводится время в текстбоксе(например 22:23) и в отдельном...

Обработка исключительных ситуаций (блок try и catch)
Еще раз здравуствуйте! Опять я на пути изучения великого и могучего Си-шарпа, и опять наткнулся на...

Обработка исключений try - catch при сканировании каталога
Напишите программу, которая сканирует некоторую папку (задаётся пользователем) с учётом...

Обработка некорректного ввода, используя механизм исключений и блок Try-Catch
Есть код Нужно сделать так, что бы после некорректного ввода(например System.FormatException...

5
298 / 229 / 145
Регистрация: 03.10.2017
Сообщений: 839
Записей в блоге: 1
11.10.2018, 17:32 2
Ну если совсем не парится, то проверку лицензии кинуть в отдельный try/catch и всё.
1
108 / 87 / 33
Регистрация: 01.03.2018
Сообщений: 236
11.10.2018, 17:42 3
Лучший ответ Сообщение было отмечено Soft17 как решение

Решение

убери return; из catch
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 668
12.10.2018, 01:30  [ТС] 4
Наверное всё таки нужно отслеживать ошибки....

Вопрос
Как сделать чтобы текст ошибки передавался в TextBox.text?

Добавлено через 1 час 17 минут
Masson1848,
Young Vu,

Уточню код
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
for (int i = start; i < fin; i++)
{
    try
    {
        // Обращаемся к экземпляру репозитария
        var instanceRepo = resultRepo.Items[i];
        var instanceRepoId = instanceRepo.Id;
            
        #region *** Лицензия. Извлекаем данные ***
        var repoLicen = client_cur.Repository.GetLicenseContents(instanceRepoId).Result; // ОШИБКА !!!
        var licenVar = repoLicen.License.Name; //  в VAR перечислены все свойства (смотри при отладке)
 
        #endregion *** Лицензия ***
 
        //...
        // Переменные. Создаём
        //...
        //  Переменные. Присваиваем значение 
        //...           
                size = instanceRepo.Size; // размер. : 4108                
                licensName = repoLicen.License.Name; // лицензия Тип // MIT License"
                licensUrl = repoLicen.HtmlUrl; // лицензия Урл // "https://github.com/danvanderboom/Xamarin-Forms-TreeView/blob/master/LICENSE"
 
                readme_content  = rawText.ToString(); // содержание "readme"
 
        //...           
        // DataTable. Добавляем строки
        //...
 
        // Отображаем DataTable ("RepoTable") в dataGridView1
        dataGridView1.DataSource = RepoTable;
                
    }
    catch 
    {                    
        return;
    }
}


Если на этапе "// Переменные. Присваиваем значение " в какой-то переменной возникает какая-нибудь ошибка , то в ДатаГрид не добавляется вся запись (репозитарий).

Вопрос.
Как сделать, если в какой-то переменной "пусто"(или ошибка), то поле за которое отвечает эта переменная должно быть пустым, а остальные поля заполняются?

Для каждой переменной делать try/ catch?
0
675 / 498 / 231
Регистрация: 02.10.2012
Сообщений: 1,708
12.10.2018, 10:00 5
в блоке catch можно задать значение переменным при ошибке. Ошибка возникнет только при получении данных, проверь после получение объект repoLicen, и если он пустой иди к следующей итерации

Добавлено через 2 минуты
а текст ошибки -
C#
1
2
3
4
catch (Exception ex)
{
TextBox.text = ex.Message;
}
1
5 / 5 / 3
Регистрация: 15.01.2017
Сообщений: 668
12.10.2018, 11:17  [ТС] 6
Цитата Сообщение от Immo Посмотреть сообщение
в блоке catch можно задать значение переменным при ошибке. Ошибка возникнет только при получении данных, проверь после получение объект repoLicen, и если он пустой иди к следующей итерации
Не могли бы вы показать как это сделать кодом?

Добавлено через 2 минуты
Там у меня несколько блоков по аналогии с "repoLicen"...
Парсится несколько характеристик репозитария...

Ваше предложение подразумевает проверять каждый или можно сделать одну проверку на всех?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2018, 11:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Обработка ошибок try catch
Как сделать, что бы не показывало, саму ошибку? Сейчас показывает Warning: mkdir(): Not a...

Обработка исключений try catch
Здравствуйте. Программа с использованием CLR. Суть работы очень проста - в три TextBox'а вводятся...

Не правильная обработка try {} catch {}
Есть единый файл входа index.php, внутри него: try { require_once ROOT ....

Catch() обработка определенных ошибок.
Мне надо сделать так, если в программе у меня происходит определенная ошибка, то мне надо сделать...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.