Пробующий
 Аватар для galileopro
185 / 98 / 10
Регистрация: 28.04.2009
Сообщений: 1,101

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

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

Author24 — интернет-сервис помощи студентам
Нужно вывести информацию о всех используемых приложением кадрах механизма структурированной обработки исключений.
Интересует что такое "используемых приложением кадрах" и какую конкретно "информацию" здесь требуется выводить? Я понимаю, что при возникновении исключения в стеке будет некая ин-я о нем, которую потом система запишет в 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Чем асинхронная логика (схемотехника) лучше тактируемой, как я думаю, что помимо энергоэффективности - ещё и безопасность.
Hrethgir 14.05.2025
Помимо огромного плюса в энергоэффективности, асинхронная логика - тотальный контроль над каждым совершённым тактом, а значит - безусловная безопасность, где безконтрольно не совершится ни одного. . .
Многопоточные приложения на C++
bytestream 14.05.2025
C++ всегда был языком, тесно работающим с железом, и потому особеннно эффективным для многопоточного программирования. Стандарт C++11 произвёл революцию, добавив в язык нативную поддержку потоков,. . .
Stack, Queue и Hashtable в C#
UnmanagedCoder 14.05.2025
Каждый опытный разработчик наверняка сталкивался с ситуацией, когда невинный на первый взгляд List<T> превращался в узкое горлышко всего приложения. Причина проста: универсальность – это прекрасно,. . .
Как использовать OAuth2 со Spring Security в Java
Javaican 14.05.2025
Протокол OAuth2 часто путают с механизмами аутентификации, хотя по сути это протокол авторизации. Представьте, что вместо передачи ключей от всего дома вашему другу, который пришёл полить цветы, вы. . .
Анализ текста на Python с NLTK и Spacy
AI_Generated 14.05.2025
NLTK, старожил в мире обработки естественного языка на Python, содержит богатейшую коллекцию алгоритмов и готовых моделей. Эта библиотека отлично подходит для образовательных целей и. . .
Реализация DI в PHP
Jason-Webb 13.05.2025
Когда я начинал писать свой первый крупный PHP-проект, моя архитектура напоминала запутаный клубок спагетти. Классы создавали другие классы внутри себя, зависимости жостко прописывались в коде, а о. . .
Обработка изображений в реальном времени на C# с OpenCV
stackOverflow 13.05.2025
Объединение библиотеки компьютерного зрения OpenCV с современным языком программирования C# создаёт симбиоз, который открывает доступ к впечатляющему набору возможностей. Ключевое преимущество этого. . .
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru