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

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

03.06.2019, 20:45. Показов 1533. Ответов 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
33403 / 21513 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
03.06.2019, 20:53
Лучший ответ Сообщение было отмечено jkrnd как решение

Решение

Именно это - вот тут: Tools->Options, дальше по скрину, нужное переключить в User Program
Миниатюры
Как подключить свою процедуру обработки ошибок?  
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33403 / 21513 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 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
33403 / 21513 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 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
33403 / 21513 / 8236
Регистрация: 22.10.2011
Сообщений: 36,914
Записей в блоге: 12
04.06.2019, 08:50
Цитата Сообщение от jkrnd Посмотреть сообщение
Всё мгновенно прояснилось бы, если б отладчик подсветил строку
А с чего он ее должен подсвечивать? Приложение вызывает функцию StrToInt с пустой строкой, эта функция выбрасывает исключение, которое тобой не обрабатывается, а обрабатывается где-то в недрах Application. Так с какого перепуга должна подсвечиваться строка с вызовом? Оберни вызов StrToInt в try/catch - будет обрабатываться исключение как положено. Ну, или используй TryStrToInt, если хочешь обойтись без обработки исключений.
1
Модератор
 Аватар для D1973
9929 / 6466 / 2457
Регистрация: 21.01.2014
Сообщений: 27,420
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru