MB: Fehlerfall in Klasse abfangen?

Moin Community,

lohnt es sich in Klassen bei einem Error den Fehler in einem try-catch-Block abzufangen, zu untersuchen und die Problemlösungshinweis auszugeben. Ich sehe da Vorteile zur Problemerfassung z.B. Fehler bei Parameter aber auch Nachteile, weil der Klassen Code sich ausweitet. Außerdem sehe ich keinen Nutzen wenn man window.onerror() in dieser Klasse verwendet. Man möge mich eines besseren belehren.

lg MB

  1. Hallo MB,

    lohnt es sich in Klassen bei einem Error den Fehler in einem try-catch-Block abzufangen, zu untersuchen und die Problemlösungshinweis auszugeben.

    Im Allgemeinen ist es so, dass ein Fehler, der eine exception wirft, nicht auf einen Bedienfehler des Nutzers zurückzuführen ist und dieser den auch nicht beeinflussen kann. Deshalb sind solche Hinweise weder notwendig noch sinnvoll. Sinnvoll wäre es, den Entwickler über den Fehler zu benachrichtigen.

    Bis demnächst
    Matthias

    --
    Wenn eine Idee nicht zuerst absurd erscheint, taugt sie nichts. (Albert Einstein)
    1. Hi Mattias,

      Sinnvoll wäre es, den Entwickler über den Fehler zu benachrichtigen.

      das war mein ziel andere Web-Admins oder Web-Entwickler zu informieren bei einem Fehlerfall. Deswegen meine Verwunderung warum ich n Thread auf gemacht habe.

      Gruß MB

      1. Tach!

        das war mein ziel andere Web-Admins oder Web-Entwickler zu informieren bei einem Fehlerfall. Deswegen meine Verwunderung warum ich n Thread auf gemacht habe.

        Du meinst, du schreibst etwas, was andere in ihren Projekten verwenden können. Dann ist es kaum deine Aufgabe eine globale Fehlerabfang-Instanz zu sein. Außerdem kennst du die Umgebung nicht und kannst nicht wissen, welche Art der Reaktion angemessen ist. Da bleibt nur, der aufrufenden Stelle den Fehler mitzuteilen, also eine Exception zu werfen oder einen entsprechendenden Wert zurückzugeben.

        dedlfix.

        1. Hallo Dedlfix,

          Du meinst, du schreibst etwas, was andere in ihren Projekten verwenden können.

          exakt

          Dann ist es kaum deine Aufgabe eine globale Fehlerabfang-Instanz zu sein. Außerdem kennst du die Umgebung nicht und kannst nicht wissen, welche Art der Reaktion angemessen ist.

          Da hast du recht

          Da bleibt nur, der aufrufenden Stelle den Fehler mitzuteilen, also eine Exception zu werfen oder einen entsprechendenden Wert zurückzugeben.

          Wie??? Wert konkret.

          Lieben Gruß MB

          1. Tach!

            Da bleibt nur, der aufrufenden Stelle den Fehler mitzuteilen, also eine Exception zu werfen oder einen entsprechendenden Wert zurückzugeben.

            Wie??? Wert konkret.

            Nicht alles, was nicht erfolgreich ausgeführt werden kann, ist eine Ausnahme. Beispielsweise einen Teilstring in einem String nicht zu finden, kann ein Fehler sein, muss aber nicht. Wenn es im konkreten Fall kein Fehler ist, dann ist eine Exception unangebracht, da sollte man -1 oder ähnliches als Position der Fundstelle zurückgeben. Wenn du aber einen Fehler feststellst, der üblicherweise nicht auftreten soll und den du nicht korrigieren kannst, dann wirf eine Exception.

            dedlfix.

            1. Hallo dedlfix,

              ok, danke für die info.

              schönen abend Dir bzw. euch.

              Lieben gruß, MB

  2. Da Excption-Modell kann Deinen Code extrem vereinfachen. Unterscheide zwischen Eingabefehlern, Fehler in der Konfiguration, Fehler beim Programmieren und Fehlern aufgrund höherer Gewalt (z.B. Serverausfall). Dementsprechend gestalte die Fehlerbehandlung, bei Letzterem könnte es einen Eskalationsplan geben (SMS, Mail....).

    Eingabefehler: Die Exception wird nicht in der Anwendung geworfen, sondern in der API-Klasse. In der Anwendung wird nur der Fehlertext verwertet, so dass der Benutzer seinen Fehler auch korrigieren kann.

    MfG

    1. Hallo pl,

      meine Frage war ob das in Klassen Sinnvoll wäre oder nicht.

      vlg MB

  3. Tach!

    lohnt es sich in Klassen bei einem Error den Fehler in einem try-catch-Block abzufangen, zu untersuchen und die Problemlösungshinweis auszugeben.

    Du stellst immer solche allgemeinen Fragen, auf die man k(aum )eine konkrete Antwort geben kann. Es kommt doch auf deinen Anwendungsfall an, was für diesen sinnvoll ist und was nicht.

    Ich sehe da Vorteile zur Problemerfassung z.B. Fehler bei Parameter aber auch Nachteile, weil der Klassen Code sich ausweitet.

    Ja, Fehlerbehandlung kann Code um ein Vielfaches aufblasen, weil es meist nur einen oder wenige Wege gibt, die richtig sind, der Rest aber nicht. Der Vorteil kann ein robuster Code sein, der nicht gleich umkippt, wenn man dagegenhaucht. Aber auch das ist alles situationsabhängig.

    Außerdem sehe ich keinen Nutzen wenn man window.onerror() in dieser Klasse verwendet. Man möge mich eines besseren belehren.

    Das kann man als letzten Notnagel global verwenden, um auf nicht individuell erkannte und abgefangene Fehler zu reagieren. Damit werden aber laut Beschreibung auch Fehler gefangen, auf die du als Programmierer keinen Einfluss hast, wie nicht ladbare Bilder oder Scripte bei Verbindungsproblemen.

    Wenn du mit deiner Frage generell try-catch mit windows.onerror vergleichen wolltest, ... Wenn du weist, dass konkrete Fehler an bestimmten Stellen auftreten können, ist es in der Regel meist besser, sie dort abzufangen oder eine Stufe weiter nach oben zu geben, als irgendwo fernab global darauf reagieren zu wollen, à la Gott wird's schon richten. Aber auch das muss situations- und anwendungsfallabhängig bewertet werden.

    dedlfix.

    1. Du stellst immer solche allgemeinen Fragen, auf die man k(aum )eine konkrete Antwort geben kann.

      Ich stelle generell allgemeine fragen beziogen auf OOP

      Es kommt doch auf deinen Anwendungsfall an, was für diesen sinnvoll ist und was nicht.

      Habe ich so begriffe wie du es gesagt hast

      Außerdem sehe ich keinen Nutzen wenn man window.onerror() in dieser Klasse verwendet. Man möge mich eines besseren belehren.

      Das kann man als letzten Notnagel global verwenden, um auf nicht individuell erkannte und abgefangene Fehler zu reagieren. Damit werden aber laut Beschreibung auch Fehler gefangen, auf die du als Programmierer keinen Einfluss hast, wie nicht ladbare Bilder oder Scripte bei Verbindungsproblemen.

      Wenn du mit deiner Frage generell try-catch mit windows.onerror vergleichen wolltest, ... Wenn du weist, dass konkrete Fehler an bestimmten Stellen auftreten können, ist es in der Regel meist besser, sie dort abzufangen oder eine Stufe weiter nach oben zu geben, als irgendwo fernab global darauf reagieren zu wollen, à la Gott wird's schon richten. Aber auch das muss situations- und anwendungsfallabhängig bewertet werden

      Einiges ist mir neu anderes wollte ich ne bestätigung haben. Besten Dank für deine Ausführliche AW.

      Herzlichste Grüße MB