Форум: "Потрепаться";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
ВнизОтладка в VS.Net 2003 Найти похожие ветки
← →
ilya39 © (2005-12-22 14:12) [0]Почему VS.Net при возникновении в приложении "unhandled exception" всегда завершает отлаживаемое приложение?
Ну например:
Visual Studio .Net 2003, С#.
int i = int.Parse(textBox1.Text);
Delphi 7. Тоже самое:
var i: integer;
...
i := StrToInt(Edit1.Text);
Допустим. Текст Edit-a (TextBox-а) в том и другом случае равен: "qwe", т.е. в случае С# мы получим System.FormatException, а в случае Delphi EConvertError.
Так вот, в Delphi можно продолжить выполнение приложения, а в Visual Studio - почему-то нет! Можно выбрать break или continue, но в любом случае потом при нажатии Run приложение завершается? Кто мне подскажет: может это где-то настраивается? Сильно мешает! Как кстати, будет в этой ситуации вести себя Delphi 2005 (или тут дело не в среде разработки)?
← →
Skyle © (2005-12-22 14:27) [1]Может быть дело в том, что в Delphi есть обработчик по умолчанию, Application.OnException?
← →
DiamondShark © (2005-12-22 14:34) [2]Потому и завершает, что оно анхэндлед.
А с какой точки Вы предлагаете продолжать выполнение при возникновении необработанного исключения?
← →
ilya39 © (2005-12-22 14:37) [3]
> [1] Skyle © (22.12.05 14:27)
Ну это здесь совсем не причем. Или Вы не поняли о чем я вообще. Толку от этого Application.OnException если он = nil
И в C# есть Application.ThreadException и AppDomain.UnhandledException...
Блин, на gotdotnet.ru тоже спрашивал... там считают это поведение VS.Net нормальным....
← →
ilya39 © (2005-12-22 14:38) [4]
> [2] DiamondShark © (22.12.05 14:34)
А с какой Delphi7 тогда продолжает?
← →
Skyle © (2005-12-22 14:39) [5]
> там считают это поведение VS.Net нормальным....
Думаю, здесь тоже так считают.
← →
ilya39 © (2005-12-22 14:42) [6]
> [5] Skyle © (22.12.05 14:39)
Мотивируйте! Почему в одном слачае так, а в другом наооборот. Хотелось бы услышать грамотный ответ.
← →
ilya39 © (2005-12-22 14:44) [7]И еще сильно интересно: как поведет себя Delphi 2005?
← →
SPeller © (2005-12-22 14:47) [8]По-моему, дельфийское приложение всегда вываливается, если исключение никем не обработано.
← →
SPeller © (2005-12-22 14:51) [9]
program lab3;
uses
SysUtils,
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
begin
StrToInt("qwe");
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Чудеса, наверное, что здесь программа дальше не идёт? Отсюда вывод - просто Борланд предусмотрительно наставил try .. except/finally. И дело вовсе не в MSVS.
← →
ilya39 © (2005-12-22 14:51) [10]
> [8] SPeller © (22.12.05 14:47)
Напишите на Delphi код указанный в
> ilya39 © (22.12.05 14:12)
допустим, в обработчике кнопки и потестируйте... после сообщения Delphi об ошибке можно будет продолжить выполнение программы, нажав кнопочку Run(это такой зеленый треугольник на tool) и увидев сообщение об ошибке уже в ОС
← →
ilya39 © (2005-12-22 14:53) [11]
> [9] SPeller © (22.12.05 14:51)
Sorry не понял вас в прошлый раз. Похоже вы правы...
← →
DiamondShark © (2005-12-22 14:55) [12]
> ilya39 © (22.12.05 14:38) [4]
>
> А с какой Delphi7 тогда продолжает?
Известно с какой: с конца блока обработки исключения:
procedure TWinControl.MainWndProc(var Message: TMessage);
begin
try
try
WindowProc(Message);
finally
FreeDeviceContexts;
FreeMemoryContexts;
end;
except
Application.HandleException(Self);
end;
end;
Вставьте строку кода не в обработчик события формы, или контрола, а, например, сюда:
program Project1;
uses
SysUtils,
Forms,
Unit1 in "Unit1.pas" {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
StrToInt("qwe");
Application.Run;
end.
И посмотрите на результат.
← →
ilya39 © (2005-12-22 14:57) [13]
> [12] DiamondShark © (22.12.05 14:55)
> [9] SPeller © (22.12.05 14:51)
Спасибо, объяснили.
← →
Agent13 © (2005-12-22 14:57) [14]
> Так вот, в Delphi можно продолжить выполнение приложения,
> а в Visual Studio - почему-то нет! Можно выбрать break
> или continue, но в любом случае потом при нажатии Run приложение
> завершается? Кто мне подскажет: может это где-то настраивается?
> Сильно мешает!
Ну ничего, что мешает. во всяком случае напоминает о необходимости проставлять try...catch :)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2006.01.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.015 c