Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 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.014 c
14-1134882689
Вопрос
2005-12-18 08:11
2006.01.15
А вас, господа, уважаемые, взрослые программисты,


14-1135274055
~viper~
2005-12-22 20:54
2006.01.15
Программа собеседник


14-1134930295
QwertyKz
2005-12-18 21:24
2006.01.15
Visual Web Developer


6-1128446131
VadimX
2005-10-04 21:15
2006.01.15
Как работать с SOCKS из Indy 9,10?


2-1135623484
gidd
2005-12-26 21:58
2006.01.15
метод hide





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский