PDA

View Full Version : unchecked exception



марик - камарик
03-26-2012, 12:57 PM
что-то голова сейчас не работает. У меня есть огромная программа. Я хочу чтоб она спокойно распечатывала ошибку и выходила, а не висла каждый раз когда есть анчекед ехепшон. Как это делать?

crazy-mike
03-26-2012, 01:21 PM
что-то голова сейчас не работает. У меня есть огромная программа. Я хочу чтоб она спокойно распечатывала ошибку и выходила, а не висла каждый раз когда есть анчекед ехепшон. Как это делать?

main () {
try { main(); }
catch ( Exception e) {
.......
};
}

:rofl:

что-то в этом духе. Но там всё равно на stack overflow наткнёшься.

__try { } __ecxept { };

Но никакого удовольствия в этом нет. Независимо от языка программирования и runtime environment.

смешно
03-26-2012, 03:15 PM
Catch me if you can ....:rofl: :34:

Буржуй
03-26-2012, 03:15 PM
Я ваще не панимаю пачему Марик не хочет потрейсать програму и найти.

марик - камарик
03-26-2012, 03:47 PM
main () {
try { main(); }
catch ( Exception e) {
.......
};
}

:rofl:

что-то в этом духе. Но там всё равно на stack overflow наткнёшься.

__try { } __ecxept { };

Но никакого удовольствия в этом нет. Независимо от языка программирования и runtime environment.

короче, вот что мне нужно было:
main method
try {
.........
.........
} catch (Throwable t){
exit(1);
}

Димуша
03-26-2012, 04:16 PM
маин () {
тры { маин(); }
цатч ( Ехцептион е) {
.......
};
}

:рофл:

что-то в этом духе. Но там всё равно на стацк оверфлощ наткнёшься.

__тры { } __ецхепт { };

Но никакого удовольствия в этом нет. Независимо от языка программирования и рунтиме енвиронмент.Больше одного [main] в программе быть не может.

crazy-mike
03-26-2012, 05:17 PM
Больше одного [main] в программе быть не может.
без разницы. main может само себя вызвать ( там пролог стандартный. Да и main , строго говоря , не является "началом исполняемого кода" - там ведь ещё "инициализаторы" и куча всяких динамических загрузчиков вызываются ещё до main. Именно поэтому такая "радость" может не сработать. ). :wink1:

crazy-mike
03-26-2012, 05:30 PM
короче, вот что мне нужно было:
main method
try {
.........
.........
} catch (Throwable t){
exit(1);
}
может не сработать из-за того , что инициализация данных тоже может быть исполняемым кодом , который выполняется до обращения к main - и как раз там тоже может возникнуть exception.

строго говоря #pragma startup или что-то похожее. И там ставить обработчик.

марик - камарик
03-26-2012, 06:17 PM
может не сработать из-за того , что инициализация данных тоже может быть исполняемым кодом , который выполняется до обращения к main - и как раз там тоже может возникнуть exception.

строго говоря #pragma startup или что-то похожее. И там ставить обработчик.

там до мэйн вряд ли что-то может сломаться. там одни переменные

crazy-mike
03-27-2012, 01:16 AM
там до мэйн вряд ли что-то может сломаться. там одни переменные
Обычно в самом деле до main ничего не ломается. Но проверить всё равно можно.

NJman
03-27-2012, 11:18 AM
Вот за что я и любил FoxPro. Там это легко решалось, а чего не хватало, на С дописать можно.

марик - камарик
03-27-2012, 11:29 AM
Обычно в самом деле до main ничего не ломается. Но проверить всё равно можно.

как?

crazy-mike
03-27-2012, 11:49 AM
как?
процедура с #pragma startup и внутри нее установка exception handler или signal handler.

Olezhik
03-28-2012, 06:57 PM
мда............. скучно тут у вас однако.

марик - камарик
03-29-2012, 01:12 AM
мда............. скучно тут у вас однако.

ok bust out NP-completeness problem

crazy-mike
03-29-2012, 02:14 AM
мда............. скучно тут у вас однако.
а в программах с использованием MFC даже и main вообще не вызывалась.
:wink1:

wlass
03-29-2012, 10:12 AM
Ну так пробный запуск типа try exception помогает немножко, а в нюансах уж надо самому разбираться.
Комар, ты попробуй нужный тебе программный фрагмент найти в Инете, а не изобретай очередной 1460-й велосипед. А если уж первопроходец, так тут тебе никто не поможет, а только операторы используемого тобой языка :)

Димуша
03-29-2012, 11:08 AM
а в программах с использованием МФЦ даже и маин вообще не вызывалась.
:щинк1:Конечно. Там все было зашито внутри.

crazy-mike
03-29-2012, 11:43 AM
Ну так пробный запуск типа try exception помогает немножко, :)
Ничего там кроме тестовых printf или MessageBox в начале каждой процедуры особо не помогает - но это очень долго. :wink1:

crazy-mike
03-29-2012, 11:45 AM
Конечно. Там все было зашито внутри.
не то чтобы внутри - просто "запуск приложения" начинался с вызова конструктора класса. :wink1:

wlass
03-29-2012, 12:28 PM
Ничего там кроме тестовых printf или MessageBox в начале каждой процедуры особо не помогает - но это очень долго. :wink1:

В чем и дело. Всего лишь позволяет ограничить аварийные ситуации. Молодой ишшо Комар, образуется, научится ошибки ловить.
А вдруг создаст что-то прорывное, и потом каждый начинающий программер сможет рутинно, по алгоритму находить свои программерские ошибки? Майк, ты тогда не забудь своего солауреата Нобелевки :leader::leader::leader::leader:
Ну, коньяку-то хоть налей :18:

crazy-mike
03-29-2012, 12:52 PM
В чем и дело. Всего лишь позволяет ограничить аварийные ситуации.
Не всегда. Довольно часто только помогает создать новые аварийные ситуации.
( конструкторы объектов внутри обработчиков исключительных ситуаций тоже могут вызывать исключительные ситуации ).
:rofl:
Обычно просто собирают "отладочную версию" программы ( но там всё выполняется "не так" как в "нормальной версии" ).

wlass
03-29-2012, 03:04 PM
Не всегда. Довольно часто только помогает создать новые аварийные ситуации.
( конструкторы объектов внутри обработчиков исключительных ситуаций тоже могут вызывать исключительные ситуации ).
:rofl:
Обычно просто собирают "отладочную версию" программы ( но там всё выполняется "не так" как в "нормальной версии" ).

Я так понимаю, что коньяку я не дождусь :vesh: