Absturz / Fehlermeldung der Anwendung melden?

  • VB.NET

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von Nanoxx.

    Absturz / Fehlermeldung der Anwendung melden?

    Hallo

    Ist es möglich, wenn die eigene Anwendung abstürzt oder Framework eine Fehlermeldung anzeigt, diesen Fehler in eine error.txt zu schreiben und hochzuladen auf einen FTP-Server? :)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Ja.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    Das hier kannst du direkt erweitern. Von wegen Upload: Müsstest du beim nächsten Programmstart gucken oder einen gesonderten Uploader beim Absturz starten.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @Vultrax Eine Möglichkeit wäre Try-Catch

    Beispiel:

    VB.NET-Quellcode

    1. Try
    2. '...
    3. Catch ex As Exception
    4. System.IO.File.WriteAllText("Pfad", ex.ToString)
    5. End Try


    Gruß
    Switcherlapp97

    EDIT: Tut mir leid. Habe den Startpost falsch verstanden. -> Meine Methode ist unbrauchbar für die komplette Anwendung
    Habe es so verstanden, dass der @TE dies nur für kleinere Code-Abschnitte verwendet
    RubiksCubeSolver


    Jetzt im Showroom

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Switcherlapp97“ ()

    @Switcherlapp97: Und damit willst du die gesamte Anwendung einpacken? Na dann gute Nacht.
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @Lukas
    Kannst du mir das vielleicht VB Übersetzen? Das mit C++ verstehe ich noch nicht so ganz ..

    @Switcherlapp97
    Ist zwar eher für kleine Sachen, aber trotzdem habe ich etwas dazugelernt :)
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford
    Hi,

    Vultrax schrieb:

    hochzuladen auf einen FTP-Server?
    das vergisst Du am Besten schnell wieder!! Warum??


    bye ...

    LaMa5.
    Die Wissenschaft wird nie ein besseres Kommunikationssystem in den Büros erfinden können als die Kaffeepause.
    (Autor: Earl Wilson, amerik. Schriftsteller)

    https://www.serviceteam-md.de
    @Vultrax: Das liefert Dir das Studio:
    Projekt -> Eigenschaften -> Anwendung ==> Anwendungsereignisse anzeigen
    ==> Datei ApplicationEvents.vb

    ==> und z.B.

    VB.NET-Quellcode

    1. Private Sub MyApplication_UnhandledException(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
    2. MessageBox.Show(e.Exception.Message)
    3. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke erstmal, ist schon fast so wie es wollte.
    Kann man den Fehlerbericht aber vielleicht etwas ausführlicher machen? z.B. bei welchen Button / welcher textbox der Fehler aufgetreten ist? Oder um welche Datei es sich handelt wenn das Problem mit Process.Start ist?

    In das habe ich es jetzt geändert:

    VB.NET-Quellcode

    1. Private Sub MyApplication_UnhandledException(sender As Object, e As ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
    2. My.Computer.FileSystem.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Fehler.txt", e.Exception.Message, True)
    3. End Sub


    Im den Fehlerbericht steht jetzt nur, "The system cannot find the file specified".

    VB.NET-Quellcode

    1. Process.Start(Application.StartupPath & "\Nicht_existierendes_Programm.exe")


    Noch dazu:
    Wie kann ich dem Fehlerbericht eine zufällig generierte Nr. zuteilen damit es auf dem FTP-Server keine doppelten Fehlerberichte gibt und andere Fehlerberichte überschreiben werden?
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Vultrax“ ()

    Vultrax schrieb:

    damit es auf dem FTP-Server keine doppelten Fehlerberichte gibt
    ... und wieder mal ein total lernresistenter TE, vermute ich. Hast du den Link von LaMa5 überhaupt angeklickt?

    VincentTB schrieb:

    VB.NET-Quellcode

    1. MessageBox.Show(e.Exception.ToString)
    Nö.

    RodFromGermany schrieb:

    VB.NET-Quellcode

    1. MessageBox.Show(e.Exception.Message)
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich weiß das es nicht sicher ist, wenn man die Daten des FTP-Servers direkt ins Programm einträgt.
    Es ist egal ob der FTP-Server gehackt wird oder nicht, er ist nur Übergangs weise da, und es wird auf ihm nichts besonderes gespeichert.

    Ich habe nun was ich wollte, er erstellt einen ausführlichen Fehlerbericht und fügt eine zufällige Zahl hinzu.

    VB.NET-Quellcode

    1. Namespace My
    2. ' Für MyApplication sind folgende Ereignisse verfügbar:
    3. '
    4. ' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
    5. ' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung nicht normal beendet wird.
    6. ' UnhandledException: Wird ausgelöst, wenn in der Anwendung eine unbehandelte Ausnahme auftritt.
    7. ' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn diese bereits aktiv ist.
    8. ' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
    9. Partial Friend Class MyApplication
    10. Private Sub MyApplication_UnhandledException(sender As Object, e As ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
    11. Dim RandomNumber As New System.Random
    12. My.Computer.FileSystem.WriteAllText(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Error_" & RandomNumber.Next(0, 999999999) & ").txt", e.Exception.ToString, True)
    13. End Sub
    14. End Class
    15. End Namespace
    "Denken ist die schwerste Arbeit, die es gibt. Das ist wahrscheinlich auch der Grund, warum sich so wenig Leute damit beschäftigen." - Henry Ford

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Vultrax“ ()

    @RodFromGermany
    Hm? Er wollte doch einen genaueren Fehler. Mit Exception.ToString hat er einen sehr genauen Fehler mit allen was er braucht. Ich verstehe nicht, was du jetzt meinst...

    EDIT: Bezieht sich nicht auf den Beitrag über mir, sondern zu Post #16
    Mfg
    Vincent