powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / как узнать номер строки вызвавщей исключение
5 сообщений из 5, страница 1 из 1
как узнать номер строки вызвавщей исключение
    #33349030
Kornjushin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Не подскажите есть ли в VC++ 7 способ узнать какая строка кода вызвала исключение.
P.S. В компиляторе от Borland есть глобальные переменные __throwLineNumber
...
Рейтинг: 0 / 0
как узнать номер строки вызвавщей исключение
    #33351644
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так ты можешь сам в свое исплючение включить эту информацию :
__FILE__ __LINE__.
...
Рейтинг: 0 / 0
как узнать номер строки вызвавщей исключение
    #33353992
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivНу так ты можешь сам в свое исплючение включить эту информацию :
__FILE__ __LINE__.

и будет там номер строки в кэтче.

Я для тестирования расстоавлял везде по коду

int debug_line = __LINE__;

а потом сужал диапазон поиска
...
Рейтинг: 0 / 0
как узнать номер строки вызвавщей исключение
    #33354202
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik MasterZivНу так ты можешь сам в свое исплючение включить эту информацию :
__FILE__ __LINE__.

и будет там номер строки в кэтче.

Чего, не полял ?
...
Рейтинг: 0 / 0
как узнать номер строки вызвавщей исключение
    #33354224
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ты наверное это имел ввиду ?

Если сорс код доступен, то переносимый способ — это задефайнить throw:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
#include <cstdio>
#include <stdexcept>

struct throw_site
{
     throw_site(char const* file, int line)
         : file_(file), line_(line)
     {}

     char const* file_;
     int line_;
};

template<class exception>
struct wrapper : exception, throw_site
{
     wrapper(exception const& e, throw_site const& s)
         : exception(e), throw_site(s)
     {}
};

template<class exception>
void operator+(throw_site const& s, exception const& e)
{
     throw wrapper<exception>(e, s);
}

#define throw throw_site(__FILE__, __LINE__) +

int main()
{
     try
     {
         throw std::runtime_error("oops");
     }
     catch(std::exception& e)
     {
         if(throw_site* s = dynamic_cast<throw_site*>(&e))
         {
             fprintf(stderr, "thrown at %s:%d\n", s->file_, s->line_);
         }
     }
}
 
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / как узнать номер строки вызвавщей исключение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]