Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101

обработка исключений

09.04.2010, 21:25. Показов 2478. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Нужно вывести информацию о всех используемых приложением кадрах механизма структурированной обработки исключений.
Интересует что такое "используемых приложением кадрах" и какую конкретно "информацию" здесь требуется выводить? Я понимаю, что при возникновении исключения в стеке будет некая ин-я о нем, которую потом система запишет в dump - файл, но если у меня программа складывает 2 числа, то где я там найду исключение? Это самому сгенерировать исключение?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2010, 21:25
Ответы с готовыми решениями:

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

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

обработка исключений
Есть вот такой код: #include <iostream> #include <fstream> using namespace std; int _tmain(int argc, _TCHAR* argv) { ...

5
 Аватар для elfon
11 / 11 / 1
Регистрация: 09.11.2009
Сообщений: 32
10.04.2010, 00:16
Кадр в стеке есть(как минимум один) до исключения, даже если ты сам не обращался к __try. Создаётся он в системной функции с которой стартует твой процесс(первичный поток)/поток, тем же __try.
Писать тут можно много, вот ссылка:
http://wasm.ru/series.php?sid=7
расписано наиподробнейше.
Читай всё, так как вначале расписан механизм исключений операционной системы, а затем надстройка компилятора.
1
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
10.04.2010, 11:04  [ТС]
Ну все равно пока никакого исключения не возникло, там будет 1 кадр. Видимо моя программа должна сама опустим при нажатии на одну кнопку поделить на нуль и показать, что записала система при этом, потом прочитать из недоступно памяти и вывести ин-фу и еще так пару исключений сгенерировать.
0
 Аватар для elfon
11 / 11 / 1
Регистрация: 09.11.2009
Сообщений: 32
10.04.2010, 11:46
Если тебе нужен список зарегистрированных обработчиков, то генерировать исключение не надо. По адресу [fs:0] находится указатель на структуру _EXCEPTION_REGISTRATION(компилятор её расширяет, сохраняя базовую часть) в ней вся инфа по зарегистрированному обработчику и указатель на следующий. В второй части статьи Matt Pietrek'а есть программа ShowSEHFrames которая выводит информацию по зарегистрированным обработчикам.
1
Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101
10.04.2010, 13:11  [ТС]
Да. Видимо это то, что нужно. Я просто ездил на олимпиаду по кодингу, там было задание
"Разработать приложение, отображающее информацию о всех используемых в нем кадрах механизма структурированной обработки исключений."
Я его не сделал. Потом автор этого вопроса сказал, что нужно было воспользоваться библиотеками автора Matt Pietrek, они были на каждом компе в каждой аудитории.
Но меня сбило с толку влово "кадрам", а не "обработчикам". Видимо имеется ввиду слово "фреймы" для обработки исключений.
Если кому интересно вот с-но сайтик с заданиями http://www.kpi.kharkiv.edu/vtp... /2010.aspx
Я выступал за "Національний аерокосмічний у-т ім. Жуковського"

Добавлено через 35 секунд
Это было 5 задание 2 тура. Там можно скачать.

Добавлено через 14 минут
Вот только одного понять не могу, что означает "всех обработчиках" это зависит от того, сколько я использую в своей программе блоков try .. except, и finally. То есть их количество я выбираю сам и просто вывожу о них информацию? Я могу использовать один блок, могу несколько. Главное: вывести инфу о всех? Я правильно понимаю?
Просто таблица же будет разная для разных программ.

На рис. 10 показан исходный код программы ShowSEHFrames.EXE. Она использует _try/_except-блоки, чтобы создать список из нескольких Visual C++ SEH-фреймов. Впоследствии, она отображает информацию о каждом фрейме, а также структуры scopetable, которые Visual C++ создаёт для каждого SEH-фрейма. Программа не вызывает и не ожидает никаких исключений. Я включил все _try-блоки для того, чтобы Visual C++ создал множество кадров EXCEPTION_REGISTRATION, с множеством элементов scopetable в них.
А как он выбирал количество этих _try - блоков? Сколько конкретно их надо выбрать? Я так понял, что 3.
0
 Аватар для elfon
11 / 11 / 1
Регистрация: 09.11.2009
Сообщений: 32
10.04.2010, 16:24
Зависит от текущей вложенности блоков __try, а это уже зависит от самого программиста сколько он использовал __try. Там он для примера сделал три:
C++
1
2
3
__try{
__try{
__try{...
плюс один системный.
Когда происходит вход в блок __try в список фреймов добавдяется новый фрейм и соответственно обработчик. При выходе из __try фрейм удаляется(либо из __except в зависимости от того произошло ли исключение).
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.04.2010, 16:24
Помогаю со студенческими работами здесь

Обработка исключений
Здравствуйте, мне нужно проанализировать ведённый номер телефона методом обработка исключений. Подскажите пожалуйста, почему я не могу...

Обработка исключений
Подскажите пожалуйста как продолжить выполнение программы после срабатывания оператора catch. catch завершает программу, но ее нужно...

Обработка исключений
Здравствуйте! Есть вот такое выражение: Подскажите пожалуйста, как правильно реализовать обработку исключений. И у меня не...

Обработка исключений
я наверное не правильно использую try-catch, прога валится при вызове throw int CFtpUtilites::connectToFtp() { WSADATA ws; ...

Обработка исключений
Почему не перехватывает ошибку и не выводит Error? а прога сама прекращает работу. #include <iostream> using namespace std; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru