ist Catch Exception for die ganze Form möglich?

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    ist Catch Exception for die ganze Form möglich?

    Hallo, kann ich eine "Catch Exception" für die ganze Form setzten und alle abfangen und ins nirgendwo schicken?
    Einzeln geht das ja bei jede Sub, ich möchte das aber einfach am Ende für alle machen, wie kan nich das umsetzen? Mfg
    Es ist irrsinn, die ganze Form in ein Try-Catch zu setzen o_0

    Der Try-Catch Block soll dir helfen, schwachstellen in deinem Programm zu entdecken
    und diese dann sinnvoll zu behandeln bzw. komplett zu beheben.

    Der Try-Catch-Block sollte auf keinen Fall dazu benutzt werden,
    vorhandene Fehler zu verstecken..
    Das wäre wirklich der Anfängerfehler Nr. 1. Exceptions sind etwas gutes und die versteckt man nicht.
    Was machst Du wenn was nicht geht? Jo, dann kannste lange suchen.
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Reginawaled schrieb:

    für die ganze Form
    nicht, jedoch für die gesamte Applikation.
    Prpjekt -> Eigenschaften ->Anwendungsereignisse anzeigen
    Links oben: MyApplication-Ereignisse
    rechts oben: UnhandledException
    ==>

    VB.NET-Quellcode

    1. Private Sub MyApplication_UnhandledException(sender As Object, e As ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
    2. ' was tun
    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!

    Trade schrieb:


    Was machst Du wenn was nicht geht? Jo, dann kannste lange suchen.

    So isses.

    Einfache casting-Exception kannst du meist sehr einfach beheben,
    wenn du z.B nen string zu nem int parsen willst und ne Exception zurückbekommst,
    kannst du das ganze einfach mit int.TryParse machen und auf das Ergebnis eingehen.

    Auch so ziemlich alle anderen Exceptions lassen sich leicht vermeiden.

    So wie @RodFromGermany das beschrieben hat kann man es natürlich machen,
    allerdings solltest du dir echt überlegen was dir das bringt..
    Naja, ich würde das auch einbauen, aber einfach um ne MessageBox anzuzeigen und die Appl. dann zu schließen.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais

    SplittyDev schrieb:


    So wie @RodFromGermany das beschrieben hat kann man es natürlich machen,
    allerdings solltest du dir echt überlegen was dir das bringt..


    Das bringt eine ganze Menge. Es mag nämlich auch dann doch noch Fehler geben, wenn das Programm fertig geschrieben, getestet ist und ausgeliefert wurde.
    Über die Methode kannst Du nun eine Routine schreiben, die den Ausnahmefehler anzeigt, den Anwender eine Entscheidungshilfe gibt und ihn aufklärt, Dir als Entwickler die Informationen per Email mit vielleicht noch Hinweisen vom Anweder zukommen lassen kann. So eine zentrale Fehlerbehandlung für nicht abgefangene Fehler ist wunderbar und läßt weder den Anwender noch den Entwickler allein.
    Klar geht das in C#.

    C#-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Threading.Tasks;
    5. using System.Windows.Forms;
    6. namespace WindowsFormsApplication12
    7. {
    8. static class Program
    9. {
    10. /// <summary>
    11. /// Der Haupteinstiegspunkt für die Anwendung.
    12. /// </summary>
    13. [STAThread]
    14. static void Main()
    15. {
    16. AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
    17. Application.EnableVisualStyles();
    18. Application.SetCompatibleTextRenderingDefault(false);
    19. Application.Run(new Form1());
    20. }
    21. static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    22. {
    23. MessageBox.Show(e.ExceptionObject.ToString());
    24. }
    25. }
    26. }
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    simpelSoft schrieb:

    oder bin ich blind
    Du kannst auch ein try / catch in die static void Main() reinpacken.
    VisualBasic-Anwendungsframework
    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 für die Antworten.
    Erstmal würde ich alles "catchen" und anzeigen lassen, wenn das Programm aber fertig ist catch ich alles und lasse sie nicht anzeigen.
    Warum ich dsa mache? weil wenn man z.B. Server seitige Programme schreibt und die Menschen sie benutzen, dann kann es sein das die Webseiten ihren API, Source etc ändern...
    Dieses würde dann Automatisch zu Fehler im Tool führen was es direkt auch bei den Menschen angezeigt würde, die das Programm benutzen.
    Um diese Fehler Meldungen die evt. dann schon viele sein könnten (z.B. 50-100 Messageboxen etc), deswegen catche ich alles weg und es schaut dezent aus auch wenn es nicht funktioniert.
    Wenn die funktionen dann irgendwann nicht funzn, dann passiert eben nichts, und die sehen das es nicht geht und können dann den programmier bescheid sagen.

    Reginawaled schrieb:

    Erstmal würde ich alles "catchen" und anzeigen lassen
    Falsche Herangehensweise.
    Währensd der Entrwicklung solltest Du nix "catchen", denn schließlich willst Du die Fehler finden, nicht aber verschleiern.
    In der Release solltest Du ggf. eine Email an Dich absenden (lassen).
    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!