2015-06-23 2 views
0

У меня есть приложение WinForms, создающее исключения из кода в EventHandler (E.G. a button click subscriber);Исключения в Visual Studio 2010 AddIn

У меня есть try..catch блок вокруг вызова ShowDialog формы;

Исключение не распространяется на блок try..catch, но он просто останавливается у обработчика, и форма закрывается.

1) Как я могу распространить исключение на блок?

2) Какова наилучшая практика в этих случаях?

Это новый VS 2010 AddIn probject с помощью простого входа в меню Инструментов добавлен с помощью мастера:

Public Sub Exec(ByVal commandName As String, ByVal executeOption As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec 
     handled = False 
     If executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault Then 
      If commandName = "MyAddin1.Connect.MyAddin1" Then 

       Dim form1 = New Form1 

       Try 
        form1.ShowDialog() 
       Catch ex As Exception 
        MessageBox.Show(ex.Message) 
       End Try 

       handled = True 
       Exit Sub 
      End If 
     End If 
    End Sub 

только содержание формы кнопки со статическим обработчиком воспитывающим «New Exception() ».

Когда я нажимаю кнопку, исключение не попадает.

ответ

0

В Windows Forms каждому обработчику событий нужен свой собственный блок try/catch, или вы можете попробовать использовать Application.ThreadException, хотя, возможно, это невозможно в надстройке. См. Top-Level Exception Handling In Windows Forms Applications

+0

Я хотел избежать попытки ... уловить в каждом обработчике событий, это кажется большим нарушением DRY ... (и дополнительной механической работой/ошибкой) – user4388177

+0

К сожалению, у меня есть глобальный обработчик исключений не работая из дополнения для меня тоже. –