Announcement

Collapse
No announcement yet.

STACK-TRACE selbst anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • STACK-TRACE selbst anzeigen

    Hallo!<br>
    <br>
    Ich möchte einen eigenen Fehler-Dialog anzeigen alla .NET. Wie bekomme ich den STACK-TRACE, wie er sowohl in der IDE als auch im .NET-Fehler-Dialog zu sehen ist, angezeigt?!?<br>
    <br>
    Mein Versuch lautet:<pre>-------------------8<-------------------
    Catch ex As Exception
    Trace.Write("'Program.exe': Class.Function/Event -> " & ex.Message)
    End Try
    -------------------8<-------------------</pre>Über <font face="courier new">Trace.Listeners</font> versuche ich dann an die Liste heranzukommen, aber ich bekomme immer nur meine eigenen STACK-Entries.<br>
    <br>
    Gruß Nico Stöckigt<br>

  • #2
    Hallo Nico,

    führt das folgende Beispiel zum gewünschten Ergebnis (siehe angehängte Abbildung)?
    <pre>
    ' Imports System.Threading
    Public Shared Sub OnThreadException(ByVal sender As Object, ByVal t As ThreadExceptionEventArgs)
    Dim iRes As DialogResult = Windows.Forms.DialogResult.Cancel
    Try
    Dim aSB As New System.Text.StringBuilder
    ' aSB.Append(t.Exception.Message + Environment.NewLine)
    aSB.Append(t.Exception.ToString + Environment.NewLine)
    Dim aInnerExc As Exception = t.Exception.InnerException
    While Not (aInnerExc Is Nothing)
    aSB.Append(aInnerExc.ToString + Environment.NewLine)
    aInnerExc = aInnerExc.InnerException
    End While
    iRes = MessageBox.Show(aSB.ToString, _
    "Anwendungs-Exception", MessageBoxButtons.AbortRetryIgnore, _
    MessageBoxIcon.Stop)
    Catch
    Try
    MessageBox.Show("Unerwarteter Programmzustand", _
    "Anwendungs-Exception", _
    MessageBoxButtons.AbortRetryIgnore, _
    MessageBoxIcon.Stop)
    Finally
    Application.Exit()
    End Try
    End Try
    ' Beendet das Programm nur dann, wenn der Benutzer Abbrechen anklickt
    If (iRes = Windows.Forms.DialogResult.Abort) Then
    Application.Exit()
    End If
    End Sub
    <br>
    Shared Sub Main()
    ' Eigenen Exception-Handler für Application aktivieren
    AddHandler Application.ThreadException, AddressOf OnThreadException
    ' Anwendung starten
    Application.Run(New Form1)
    End Sub
    <br>
    Public Sub DoWork()
    Dim aExc As New System.DivideByZeroException
    aExc.HelpLink = "http://localhost/Liesmich.htm"
    Throw aExc
    End Sub
    <br>
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    DoWork()
    End Sub
    </pre&gt

    Comment

    Working...
    X