Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Внизraise exception до Application.Run НЕ покажет сообщение. Найти похожие ветки
← →
Кто б сомневался © (2016-01-17 22:10) [0]Если строка "raise exception" указана до строки Application.Run, то исключение не сработает, если программа запущена без отладчика. Т.е. прога молча закрывается, никаких сообщений. А с отладчиком сообщение появится.
Я не нашел упоминание об этом ньюансе в хелпе или что-то пропустил..
Это никак не изменить, спасет только ShowMessage?
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
raise Exception.Create("Error Message"); <<<
Application.Run;
end.
← →
Кто б сомневался © (2016-01-17 22:12) [1]
> то исключение не сработает
Оно конечно сработает, но без сообщения юзеру.
← →
Кто б сомневался © (2016-01-17 22:42) [2]Разве что так сделать:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
try
// где то тут код с raise Exception
except
on E: Exception do
begin
Application.ShowException(E);
raise;
end
end;
Application.Run;
end.
Я этого ньюанса не знал, поэтому наверняка были юзеры у которых прога просто "не запустилась". Что сделает большинство юзеров? - просто удалят ее и забудут.
Это большое неудобство как для юзера так и для разработчика.
Как вы думаете это можно считать багом, может запостить его qc?
← →
Германн © (2016-01-18 00:12) [3]
> Как вы думаете это можно считать багом, может запостить
> его qc?
Нет. В Application.Run запускается цикл выборки сообщений. Т.е. сама программа. До вызова этого метода только ручками.
← →
DayGaykin © (2016-01-18 09:20) [4]Точно не знаю, но в лог должно записаться. Посмотри просмотр событий приложений.
← →
Игорь Шевченко © (2016-01-18 10:27) [5]
> Это никак не изменить, спасет только ShowMessage?
Спасет MessageBox
← →
Dimka Maslov © (2016-01-18 10:43) [6]Исключение может ещё возникнуть в секции инициализации или финализации модуля. Тогда никакой try не спасёт. Поэтому единственный верный выход - писать программу так, чтобы при инициализации исключения не возникали.
← →
virex(home) © (2016-01-18 11:43) [7]>Dimka Maslov © (18.01.16 10:43) [6]
> Исключение может ещё возникнуть в секции инициализации или финализации модуля. Тогда никакой try не спасёт. Поэтому единственный верный выход - писать программу так, чтобы при инициализации исключения не возникали.
try finally?
← →
virex(home) © (2016-01-18 11:44) [8]>virex(home) © (18.01.16 11:43) [7]
тьфу не дочитал
← →
Игорь Шевченко © (2016-01-18 12:54) [9]
> Что сделает большинство юзеров? - просто удалят ее и забудут.
>
И правильно сделают
← →
Dimka Maslov © (2016-01-18 14:13) [10]
> try finally?
Я как-то давно изголился до такой степени, что возникало исключение при финализации модуля System. Какой уж тут try finally.
← →
Rouse_ © (2016-01-18 18:38) [11]Сгенерировать исключение на запуске приложения можно банальным аудитом на доступ к реестру, после чего можно даже ИШ сказать - выкинь свое ПО, оно не правильно работает и пусть его сотрут все пользователи :)
А чтобы было правильно, нужно обрабатывать исключения до того как все упадет.
http://alexander-bagel.blogspot.ru/2014/01/217.html
← →
DayGaykin © (2016-01-18 19:52) [12]
> Rouse_ © (18.01.16 18:38) [11]
>
Сань, есть такие темы, на которую у тебя нет статьи? :)
← →
Rouse_ © (2016-01-18 19:53) [13]Ну вот скоро по виртуализации закончу статью и может быть уже и не будет :)
← →
Игорь Шевченко © (2016-01-18 21:58) [14]Rouse_ © (18.01.16 18:38) [11]
Мое не выкинут.
← →
Rouse_ © (2016-01-18 23:00) [15]Знаю :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c