Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1

Не пойму момент (обработка исключений)

10.02.2013, 22:25. Показов 3301. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
try
    {
        Application->Initialize();
        Application->CreateForm(__classid(TForm1), &Form1);
        Application->Run();
    }
    catch (Exception &exception)
    {
        Application->ShowException(&exception);
    }
    catch (...)
    {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }
Я так понимаю:
что в первом блоке кетч обрабатывается исключения которые "знает" класс exception. А во втором все остальные. Но не понятным мне способом.
C++
1
throw Exception("");
тут генерируется исключение с пустой строкой тгда если сработает это
C++
1
Application->ShowException(&exception);
то выдатся пустое сообщение да или поправте меня? Я только недавно выучил блоки try catch.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.02.2013, 22:25
Ответы с готовыми решениями:

Обработка исключений. Как организовать общий обработчик исключений?
У меня есть последовательность вызова методов для внесения данных в таблицу БД. Сам метод внесения данных. Он генерирует исключение ...

Обработка исключений с пмощью структурированной обработки исключений
Есть функция, которая определенным образом работает с файлами,но при работе с файлами "не подходящего" типа вызывается...

Не пойму один момент по проектированию
Допустим, есть классы А и В. Файл А.h инклудит файл B.h. Но в классе А есть переменная, которая нужна классу В, однако файл В.h не...

23
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.02.2013, 23:15
Почти все верно, за исключением твоего мнения о "познаниях" класса Exception. Просто с помощью throw можно "бросить" не только экземпляр класса Exception, но и любой другой объект. Вообще любой.
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
10.02.2013, 23:29  [ТС]
тоесть как это?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.02.2013, 23:34
"То есть как" что? В угадай мелодию я не играю - задавай конкретные вопросы.
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
11.02.2013, 00:15  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Просто с помощью throw можно "бросить" не только экземпляр класса Exception, но и любой другой объект. Вообще любой.
Вот это пожалуйста поподробней.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 00:47
Цитата Сообщение от HardLogin Посмотреть сообщение
то выдатся пустое сообщение да или поправте меня? Я только недавно выучил блоки try catch.
Вполне возможно, а возможно выдаст что-то другое нужно смотреть что в классе Exception, возможно он как-то иначе обработaет случай с ""
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
11.02.2013, 07:05
Можно, конечно; все уже написано до нас - Exceptions.
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
11.02.2013, 09:15  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Вполне возможно, а возможно выдаст что-то другое нужно смотреть что в классе Exception, возможно он как-то иначе обработaет случай с ""
А разве не будет странным для пользователя пустое сообщение??? И почему может быть другое искл.?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 12:10
Цитата Сообщение от BRcr Посмотреть сообщение
Можно, конечно; все уже написано до нас - Exceptions.
То STL а не VCL тип исключения.
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 12:17
Цитата Сообщение от HardLogin Посмотреть сообщение
А разве не будет странным для пользователя пустое сообщение??? И почему может быть другое искл.?
Да странно...
Это по тому что теоретически в все исключения должно словить catch (Exception &exception)...
А в непредусмотренных ошибках - catch (...).
Когда ошибка "не предусмотрена" то и сказать пользователю в принципе нечего...
Миниатюры
Не пойму момент (обработка исключений)  
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
11.02.2013, 13:18  [ТС]
ну хорошо допустим а почему нельзя вот так
C++
1
2
3
4
catch (...)
    {
        //тут выдать сообщение что неизвестная ошибка(просто я еще не прошел как это сделать)
    }
в чем разница?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 13:32
чЕ та сам не понимаю...
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
11.02.2013, 13:34  [ТС]
тоже не знаете?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
11.02.2013, 13:42
HardLogin, этот код из первого поста - это эталон какой-то что ли? Кто-то решил так написать, а мы давайте щас все будем натужно думать, и зачем же он написал именно так?..
Никто не мешает выдать сообщение произвольного содержания, хоть о погоде за окошком.
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 13:44
Цитата Сообщение от BRcr Посмотреть сообщение
Кто-то решил так написать,
Кто-то это разработчики... и походу они тут нахалтурили... хотя с другой стороны таких ситуаций с перехватом в catch(...) не должно быть в принципе.
1
Модератор
 Аватар для vxg
3409 / 2180 / 354
Регистрация: 13.01.2012
Сообщений: 8,460
11.02.2013, 14:45
при возникновении исключения не принадлежащего классу Exception Они что бы не засорять текст программы кидают исключение класса Exception и тут же ловят и показывают его. вместо пустой строки вы можете ввести свое сообщение например "непредвиденное исключение". по какой-то причине они не стали осчастливливать код этим текстом и оставили это вам
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
11.02.2013, 16:20  [ТС]
кто они? вы имеете ввиду мой код?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 16:22
Разработчики Borland ныне Embercadero
1
 Аватар для HardLogin
54 / 54 / 2
Регистрация: 20.01.2013
Сообщений: 832
Записей в блоге: 1
11.02.2013, 16:23  [ТС]
хотя я вас понял но опять же почему бы просто не сделать так
C++
1
2
3
4
catch (...)
    {
        //тут выдать сообщение что неизвестная ошибка(просто я еще не прошел как это сделать)
    }
я вот думал над этим возможно изза того что при таком коде
C++
1
2
3
4
5
6
7
8
9
10
11
catch (...)
    {
        try
        {
            throw Exception("");
        }
        catch (Exception &exception)
        {
            Application->ShowException(&exception);
        }
    }
возможно не только появляется сообщение но и чтото еще делается внутри функции. Это возможно?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.02.2013, 16:27
Цитата Сообщение от HardLogin Посмотреть сообщение
возможно не только появляется сообщение но и чтото еще делается внутри функции. Это возможно?
Опять нужно смотреть в класс Exeption, но сомневаюсь....
Тут просто по видимому дается возможность доработки этого случая разработчиком программы
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.02.2013, 16:27
Помогаю со студенческими работами здесь

Обработка исключений
Здравствуйте! Есть код, который записывает интернет страницу в 2 файла через промежуточный массив(буфер). public static void...

Обработка исключений
Здравствуйте. Мне поставлена задача - сделать математически простую программу (перевод одних единиц в другие), но с непробиваемой защитой...

Обработка исключений
Здравствуйте!!! У меня есть несколько классов в них обрабатывается вводимая с формы информация. Например if (!Int64.TryParse(value,...

Обработка исключений
Есть задания 1.Написать пример программы по обработке различных типов исключений. Программа должна быть проектом Windows Form и...

Обработка исключений
Создать программу, вычисляющую логарифм числа.Для этого надо поместить в форму два компонента Tedit для ввода значения и результата и...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru