Здравствуйте IT, вы писали:
IT>Здравствуйте VladD2, вы писали:
ФМХ>>>1. try ФМХ>>>2. { ФМХ>>>3. int a = b / 0; ФМХ>>>4. } ФМХ>>>5. catch() ФМХ>>>6. { ФМХ>>>7. // Как мне узнать что исключение произошло именно в строке 3? ФМХ>>>7. }
VD>>Так поставь в catch TRACE. В его начале выводи имя файла (__LINE__), а за ним дописывай "(__LINE__)". Тогда можно будет (в VC) переходить к этому месту как к ошибке.
IT>В этом случаее __LINE__ выдаст строку 7, а по условию нужна именно 3. Насколько мне известно, никакого известного науке способа узнать о месте исключения после исключения нет. По крайней мере в отладчике об этом узнать невозможно, так как стек откатывается в обратную сторону.
Не! Ну, если нельзя но очень хочется... :)
#ifdef _DEBUG
char g_szSuxxxx[0x100];
#define BUG10k lstrcpy(g_szSuxxxx, __LINE__)
#else //_DEBUG
#define BUG10k
#endif //_DEBUG
//...
1. try
2. {
3. BUG10k; int a = b / 0;
3. BUG10k; int с = b / 0;
3. BUG10k; int в = b / 0;
4. }
5. catch()
6. {
7. // Как мне узнать что исключение произошло именно в строке 3?
8. TRACE(__LINE__); TRACE(g_szSuxxxx); TRACE("\n");
9. }
Прошу строго не судить. :)
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.