powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему не ловятся исключения?
18 сообщений из 18, страница 1 из 1
Почему не ловятся исключения?
    #38063814
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю проект на Windows 7 64bit (там же где и пишу проект) и под отладкой, и без - все нормально, исключения ловятся и обрабатываются.
Запускаю его же под Windows XP embedded 32 bit, и как будто все блоки try - catch вытерли! Вместо обработки вываливаются системные окна исключения JIT среды с кнопками continue/exit. Пытался и под удаленной отладкой и без нее, одно и тоже.

Пытался чтото настроить в Отладка - Исключения, но не помогло.
Как решить проблему?
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38064079
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал на Xp Professional - такая же проблема.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38064082
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebelintпопробовал на Xp Professional - такая же проблема.
а что за исключение?
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38064194
sld
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
sld
Гость
код бы увидеть где чо, а так мало информации.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38064570
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например вот

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
  public void TryOpenCheck()
        {
            TryExecute(_driver.GetShortECRStatus);
             
            if (_driver.ECRMode == 8)
                TryExecute(_driver.CancelCheck);
            if (_driver.ECRMode == 3)
                throw new Exception(_driver.ECRModeDescription); //тут генерируется исключение
        }// тут вываливается с таким сообщением "Exception не обработано пользовательским кодом" И далее в сообщении содержание ECRModeDescription



но функция вызывается из кода, который обернут
Код: c#
1.
2.
3.
4.
5.
6.
7.
try
            {
  catch (Exception ex)
            {
                //вывод на экран ECRModeDescription

            }




то есть по идее генерируемое исключение должно передать управление в catch с выводом на экран




стек
PositionFly.exe!KalinaSmart.FR.ManagerFR.TryOpenCheck() Строка 247 C#
PositionFly.exe!KalinaSmart.FR.BaseSaleCheck.BaseSaleCheck(int type) Строка 16 + 0x13 байт C#
PositionFly.exe!KalinaSmart.FR.SaleCheck.SaleCheck() Строка 5 + 0xe байт C#
PositionFly.exe!KalinaSmart.RegistrationSellForm.RegistrationSellForm_Load(object sender, System.EventArgs e) Строка 93 + 0x16 байт C#
[Внешний код]
> PositionFly.exe!KalinaSmart.DocumentsForm.SellRegistationButton_Click(object sender, System.EventArgs e) Строка 218 + 0xa байт C#
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38064673
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покопался еще, уточняю:

вызов этой функции по стеку начинается в RegistrationSellForm_Load(object sender, EventArgs e)
если обернуть в try вызов именно в ней или дальше по стеку, то все нормально, исключение ловится

но если обернуть вызов формы, то исключения не обрабатываются

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  try
            {
              using (var rsf = new RegistrationSellForm())
                {
                    rsf.ShowDialog();
                }

                Show();
            }
            catch (Exception ex) // сюда не приходит обработка, вылетает до нее.
            {
            }



WTF???
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38064840
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS Да, кстати проект был переведен с Compact Net 3.5 под WINCE на Net 4 desktop. Потом пытался на 3.5 desktop, та же ситуация. в общем ахинея какаято, первый раз встречаюсь чтоб исключение просто так не ловило.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38066523
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebelint, вроде всё правильно, форма отдельно событие RegistrationSellForm_Load отдельно.
форма загрузится, отображается, генерирует какие то события, а обрабатываются они в другом месте.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38066530
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя возможно я не прав :)
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38067283
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHTOH_LХотя возможно я не прав :)
С чего это? Конечно не прав.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38067501
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebelint, что такое Net 4 desktop? WPF? WinForms?
не знаю что там в Compact Net 3.5 (не знаком)
а например для wpf
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 private Window w;

        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            try
            {
                w = new Window { Width = 300, Height = 300 };
                w.Loaded += w_Loaded;//[color=red]!!!обратите внимание на эту строчку!!![/color]
                w.Show();
            }
            catch (Exception)
            {
//сюда  исключение из Loaded не придёт
                //throw;
            }
        }

        private void w_Loaded(object sender, RoutedEventArgs e)
        {
            throw new Exception();
//тут приложение упадёт
        }
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38068041
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winforms
да, похожий пример. НО ПОЧЕМУ? в compact 3.5 исключение проходит до первого catch, даже если оно в описано в Program, а если его нет, то уже вываливается.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38069482
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebelintwinforms
да, похожий пример. НО ПОЧЕМУ? в compact 3.5 исключение проходит до первого catch, даже если оно в описано в Program, а если его нет, то уже вываливается.

механизм исключений работает везде одинаково
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38069530
beg-in-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rebelint,

была похожая тема try-finally exception
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38069675
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
beg-in-er, там не о том. тут исключение не там где его ловил ТС
(исключение в обработчике события, а поймать его Rebelint хотел там где сгенерированно событие {как то так})
в compact 3.5 наверное как то по другому всё работает.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38070283
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AHTOH_Lв compact 3.5 наверное как то по другому всё работает.
нет, не по-другому
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38070577
Фотография AHTOH_L
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation, в чём же тогда разница?
судя по сообщениям ТС - формы там как то по другому сделаны.
...
Рейтинг: 0 / 0
Почему не ловятся исключения?
    #38070789
Rebelint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ТС, если че :)
в общем глядите
В Compact и обычной но на Windows 7 64bit - исключение ловится с любого уровня
в обычной но на XP (простой 32bit и embedded) - исключение пролетает необработанным до системы не доходя до внешнего вызова формы

Потом попробую на windows 7 32bit. Вот что интересно стек отличается.
Стек на XP
> PositionFly.exe!KalinaSmart.RegistrationSellForm.RegistrationSellForm_Load(object sender, System.EventArgs e) Строка 64 C#
System.Windows.Forms.dll!System.Windows.Forms.Form.OnLoad(System.EventArgs e) + 0x206 байт
System.Windows.Forms.dll!System.Windows.Forms.Form.OnCreateControl() + 0x58 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.CreateControl(bool fIgnoreVisible) + 0x18f байт
System.Windows.Forms.dll!System.Windows.Forms.Control.CreateControl() + 0x24 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.WmShowWindow(ref System.Windows.Forms.Message m) + 0x9f байт
System.Windows.Forms.dll!System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m) + 0x308 байт
System.Windows.Forms.dll!System.Windows.Forms.ScrollableControl.WndProc(ref System.Windows.Forms.Message m) + 0x2a байт
System.Windows.Forms.dll!System.Windows.Forms.Form.WmShowWindow(ref System.Windows.Forms.Message m) + 0x50 байт
System.Windows.Forms.dll!System.Windows.Forms.Form.WndProc(ref System.Windows.Forms.Message m) + 0x209 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.OnMessage(ref System.Windows.Forms.Message m) + 0x13 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.ControlNativeWindow.WndProc(ref System.Windows.Forms.Message m) + 0x31 байт
System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.Callback(System.IntPtr hWnd, int msg, System.IntPtr wparam, System.IntPtr lparam) + 0x96 байт
[Переход от машинного кода к управляемому]
[Переход от управляемого кода к машинному]
System.Windows.Forms.dll!System.Windows.Forms.Form.SetVisibleCore(bool value) + 0x277 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.Visible.set(bool value) + 0x14 байт
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) + 0x1b6 байт
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) + 0x61 байт
System.Windows.Forms.dll!System.Windows.Forms.Application.RunDialog(System.Windows.Forms.Form form) + 0x33 байт
System.Windows.Forms.dll!System.Windows.Forms.Form.ShowDialog(System.Windows.Forms.IWin32Window owner) + 0x38f байт
System.Windows.Forms.dll!System.Windows.Forms.Form.ShowDialog() + 0x7 байт
PositionFly.exe!KalinaSmart.DocumentsForm.SellRegistationButton_Click(object sender, System.EventArgs e) Строка 218 + 0xa байт C#


это на Windows 7 64bit

> PositionFly.exe!KalinaSmart.RegistrationSellForm.RegistrationSellForm_Load(object sender, System.EventArgs e) Строка 64 C#
System.Windows.Forms.dll!System.Windows.Forms.Form.OnLoad(System.EventArgs e) + 0x1e9 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.CreateControl(bool fIgnoreVisible) + 0x1c4 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.CreateControl() + 0x24 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.WmShowWindow(ref System.Windows.Forms.Message m) + 0xd8 байт
System.Windows.Forms.dll!System.Windows.Forms.Control.WndProc(ref System.Windows.Forms.Message m) + 0x3dd байт
System.Windows.Forms.dll!System.Windows.Forms.Form.WmShowWindow(ref System.Windows.Forms.Message m) + 0x82 байт
System.Windows.Forms.dll!System.Windows.Forms.Form.WndProc(ref System.Windows.Forms.Message m) + 0x243 байт
System.Windows.Forms.dll!System.Windows.Forms.NativeWindow.DebuggableCallback(System.IntPtr hWnd, int msg, System.IntPtr wparam, System.IntPtr lparam) + 0x15e байт
[Переход от машинного кода к управляемому]
[Переход от управляемого кода к машинному]
System.Windows.Forms.dll!System.Windows.Forms.Form.SetVisibleCore(bool value) + 0x304 байт
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(int reason, System.Windows.Forms.ApplicationContext context) + 0x514 байт
System.Windows.Forms.dll!System.Windows.Forms.Application.ThreadContext.RunMessageLoop(int reason, System.Windows.Forms.ApplicationContext context) + 0x81 байт
System.Windows.Forms.dll!System.Windows.Forms.Form.ShowDialog(System.Windows.Forms.IWin32Window owner) + 0x762 байт
PositionFly.exe!KalinaSmart.DocumentsForm.SellRegistationButton_Click(object sender, System.EventArgs e) Строка 218 + 0x10 байт C#

Где то от "[Переход от машинного кода к управляемому]" и выше исключение вылетает необработанное исключение
И тут два вопроса: 1. почему разные стеки с одним и тем же Net 4; 2.Как сделать чтобы исключение не пролезало до системы, ибо на обработке их построена логика программы.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Почему не ловятся исключения?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]