Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648

Как подключить свою процедуру обработки ошибок?

03.06.2019, 20:45. Показов 1503. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте.

C++
1
2
3
4
5
6
7
8
9
10
    int i = 5;
    int res = 0;
    try
    {
        res = i/0;
    }
    catch(...)
    {
        Label1->Caption = "err";
    }
Программа при выполнении сначала выдаёт сообщение системы о ошибке и только затем (после нажатия continue) срабатывает
C++
1
Label1->Caption = "err";
Я хочу проигнорировать сообщение системы и самому вывести сообщение об ошибке.
Где в XE находится соответствующая настройка?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2019, 20:45
Ответы с готовыми решениями:

Require.js как подключить свою функцию?
Создал например функцию (fucntion(){ some code return something } создал файл myfunc.js в мейн.джс указал пути ну и...

Как правильно подключить свою библиотеку?
Здравствуйте всем. Я использую Visual Studio. В одном решении у меня находится проект библиотеки SEAL и проект SEALStart, из которого я...

Как подключить в atmel studio 7 свою библиотеку?
у меня Atmel Studio 7 #include "libraries/lcd.h" положил в папку с проектом и не работает еще мне нужно,что бы не в папку с...

11
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,885
Записей в блоге: 12
03.06.2019, 20:53
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Именно это - вот тут: Tools->Options, дальше по скрину, нужное переключить в User Program
Миниатюры
Как подключить свою процедуру обработки ошибок?  
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,885
Записей в блоге: 12
03.06.2019, 20:55
Я смотрю, уже пожинаешь плоды отсутствия кнопки "Run without debugging"?
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
03.06.2019, 21:07  [ТС]
volvo, а нельзя все сразу игнорировать. а не только деление на ноль (взятое лишь для примера).
Как в BCB6, сбросив галочки Stop on C++ (Delphi) Exception.

Добавлено через 4 минуты
Цитата Сообщение от volvo Посмотреть сообщение
Run without debugging
делает то что нужно, конечно, но обработку ошибок тоже ведь приходится отлаживать. Мне кажется самое сложное в программировании это обработка ошибок.
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
03.06.2019, 21:13  [ТС]
Заработало вот так:
Миниатюры
Как подключить свою процедуру обработки ошибок?  
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
03.06.2019, 21:17  [ТС]
как мне вот это обработать?
Миниатюры
Как подключить свою процедуру обработки ошибок?  
Изображения
 
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,885
Записей в блоге: 12
03.06.2019, 21:23
Что значит "Как"? Лови EConvertError и обрабатывай.
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
04.06.2019, 08:01  [ТС]
volvo, вот код модуля формы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int val = -1;   // Значение, вызывающее ошибку EConvertionError
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    ComboBox1->Style = csDropDownList;
    ComboBox1->Items->Add("0");
    ComboBox1->Items->Add("1");
    ComboBox1->Items->Add("2");
 
    ComboBox1->ItemIndex = val;
}
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    val = StrToInt(ComboBox1->Text);
}
При val = -1 генерируется исключение EConvertionError, так как ComboBox1->Text == NULL.
Но отладчик подсвечивает строку
C++
1
Application->Run();
в модуле проекта (не формы).
Всё мгновенно прояснилось бы, если б отладчик подсветил строку
C++
1
val = StrToInt(ComboBox1->Text);
в модуле формы. Может я давлю не на те клавиши?
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,885
Записей в блоге: 12
04.06.2019, 08:50
Цитата Сообщение от jkrnd Посмотреть сообщение
Всё мгновенно прояснилось бы, если б отладчик подсветил строку
А с чего он ее должен подсвечивать? Приложение вызывает функцию StrToInt с пустой строкой, эта функция выбрасывает исключение, которое тобой не обрабатывается, а обрабатывается где-то в недрах Application. Так с какого перепуга должна подсвечиваться строка с вызовом? Оберни вызов StrToInt в try/catch - будет обрабатываться исключение как положено. Ну, или используй TryStrToInt, если хочешь обойтись без обработки исключений.
1
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
04.06.2019, 08:51
Цитата Сообщение от jkrnd Посмотреть сообщение
Но отладчик подсвечивает строку
Ну все правильно... Исключение у Вас возникло в методе создания формы - поэтому компилятор прервал метод OnCreate и остановился на следующей строке после вызова этого метода, т.е. как раз на Application->Run();
1
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
04.06.2019, 09:26  [ТС]
Я привёл пример без лишнего кода, для наглядности. В реальности и в конструкторе и в OnCreate куча всего понаписано. В конкретном примере обрабатывались аргументы командной строки. Попробуй сразу разберись, что вызвало исключение. Вот я и стал оборачивать в try/catch совсем не то, что нужно было.
Теперь, если такое произойдёт, буду знать, что строку, вызывающую ошибку надо будет ещё и поискать получше.
Кстати, то что, мне нужно было в самом начале, я нашёл вот здесь (может я и неправ):
Миниатюры
Как подключить свою процедуру обработки ошибок?  
0
 Аватар для jkrnd
179 / 69 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
04.06.2019, 09:27  [ТС]
всем огромное спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.06.2019, 09:27
Помогаю со студенческими работами здесь

Как подключить свою библиотеку, написанную на ассемблере?
Здравствуйте! Новичок я в с++, подскажите пожалуйста что нужна написать чтобы подключить свою библиотеку и вызвать от туда...

Как назначить на событие свою процедуру программно? (с подковыркой)
Имеется сканер отпечатков, который выполнен ActiveX объектом. У этого сканера есть, например, событие которое относится к...

Android Studio Как подключить свою базу данных
База данных *.sqlite Нужна помощь гуру, как образом это реализуется, не обязательно код, хотя бы объяснения

Как каждому объекту класса из списка назначить свою процедуру?
как каждому объекту класса в списке назначить свою процедуру при заполнении списка объектами, со свойствами я разобрался, а вот с методами...

Как лучше построить механизм обработки ошибок на основе исключений?
Доброго дня! Я сейчас разрабатываю проект и хочу спросить: как лучше построить механизм обработки ошибок на основе исключений? Есть как...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru