2015-05-27 18 views
5

Merhaba Bu projede "sorun" eylemcisi için kodlarım olması gereken bazı sorunlar yaşıyor.Küresel istisnaları VB'ye taşıyın

Public Event UnhandledException As UnhandledExceptionEventHandler 

Private Sub form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
      Dim currentDomain As AppDomain = AppDomain.CurrentDomain 

      AddHandler currentDomain.UnhandledException, AddressOf MyHandler 
     End Sub 

    Sub MyHandler(ByVal sender As Object, ByVal args As UnhandledExceptionEventArgs) 
      Dim e As Exception = DirectCast(args.ExceptionObject, Exception) 

      Using sw As New StreamWriter(File.Open(myFilePath, FileMode.Append)) 
       sw.WriteLine(Date.now & e.toString) 
      End Using 

      MessageBox.Show("An unexcpected error occured. Application will be terminated.") 
      Application.Exit() 
     End Sub 

     Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click 
      Throw New Exception("Dummy Error") 
     End Sub 

ben yakalamak tüm istisnaları global olarak ve debugger (istisna işleme ve Textfile yazma) 'de çalışıyor çalışma zamanı sırasında günlük dosyası oluşturmak için çalışıyorum ama kurulum projesinde inşa sonra herhangi işlenmemiş özel durumlar yakalamak edemez ve Bir makineye takılı. Neyi kaçırıyorum? Kurulum projeme ek bileşenler eklemem gerekir mi? Yardım,

+0

İşleyici hiç çalışmıyor - örn. MessageBox'ı işleyicide ilk satır olarak taşırsanız onu görüyor musunuz? İşleyicide bir hatayla karşılaşıyor olabilirsiniz (örneğin günlüğe kaydetme gibi) – theduck

+0

MessageBox'ı işleyicinin ilk satırına taşımayı denedim ve evet beliriyor. İşleyicinin başlangıcına kesme noktası koymayı denedim ve işleyiciden doğruca adım adım akıttım ve – Adrian

+0

işlecini çalıştıran kullanıcı için günlük dosyasındaki izinler tamam mı? – theduck

cevap

7

için büyük memnuniyet duyacaktır. Tüm uygulama için istisnaları halletmenin bir yolu zaten vardır. İşleyiciyi bir forma gömmek, bu formun açık ve kapalı olduğu zaman sadece yakalanıp kaydedilebileceği anlamına gelir. > Özellikler - -

  1. Projesi git> Uygulama ve altına yakın/kısmındaki "Uygulama olayları görünümü" butonuna tıklayın.

  2. Bu, ApplicationEvents.vb'u açacaktır. Sol menüde (MyApplicationEvents)'u seçin; ve sağda UnhandledException. Onları görmek ve bunları düzeltmek böylece VS onları ilk yakalar çünkü IDE çalışırken bu özel durumları yakalamak olmaz

    Private Sub MyApplication_UnhandledException(sender As Object, 
                  e As ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException 
    
        Dim myFilePath As String = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), 
                  "badjuju.log") 
    
        Using sw As New StreamWriter(File.Open(myFilePath, FileMode.Append)) 
         sw.WriteLine(DateTime.Now) 
         sw.WriteLine(e.Exception.Message) 
        End Using 
    
        MessageBox.Show("An unexcpected error occured. Application will be terminated.") 
        End 
    
    End Sub 
    

: Bu kod ekleyebilirsiniz hangi bir başka tipik olay işleyicisi açar.