Ich denke, Ihr Hauptproblem ist, dass Sie Ausnahmen verschlucken, was sehr schlecht ist. Deshalb "funktioniert es manchmal". Etwas wirft eine Ausnahme, und du fängst es an, aber danach machst du nichts anderes mehr. Zumindest würde ich eine Art Fehlermeldung in Ihrem catch
Block anzeigen.
Ein paar andere Probleme:
try..catch
Blöcke benötigen? Die aktuelle Annahme in Ihrem Code ist, dass jede Zeile, die in ein try..catch
eingeschlossen ist, unabhängig von den anderen ist, und die Ausführung kann trotzdem fortgesetzt werden, wenn etwas in einer (oder mehreren) dieser Anweisungen schief geht. Bist du sicher, dass du das willst? Wenn ja, gibt es definitiv einen besseren Weg, damit umzugehen. try..catch
blockieren und eine Fehlermeldung in catch
anzeigen
Ich denke, was Sie wollen, kann so gemacht werden:
%Vor% Auf diese Weise behandelt der Block catch
den Fall, wenn irgendwo in diesen Anweisungen eine Ausnahme auftritt.
Javascript hat auch keine echten checked-Ausnahmen. Sie können das umgehen, indem Sie einen einzelnen try-Block verwenden und das Ausnahmeobjekt untersuchen, das Sie erhalten * .
Erweitern wir das, worüber ich schon gesprochen habe, gibt es zwei Möglichkeiten, Ausnahmen zu behandeln. Der erste Weg, wie ich zuvor gezeigt habe, geht davon aus, dass sich der Code bei einer Ausnahme in einem ungültigen / undefinierten Zustand befindet und dies bedeutet, dass der Code einen nicht behebbaren Fehler gefunden hat. Eine andere Möglichkeit, Ausnahmen zu behandeln, ist, wenn Sie wissen, dass Sie etwas wiederherstellen können. Sie können dies mit einer Flagge tun. Also:
%Vor%In diesem Fall hängt der Ablauf Ihrer Logik davon ab, dass eine Ausnahme ausgelöst wird. Wichtig ist, dass die Ausnahme wiederherstellbar ist und abhängig davon, ob sie ausgelöst wurde oder nicht, Sie verschiedene Dinge tun.
* Hier ist ein etwas erfundenes Beispiel, das checked-exceptions demonstriert. Ich habe zwei Ausnahmen namens VeryBadException
und ReallyBadException
, die (zufällig) aus zwei Funktionen geworfen werden können. Der Block catch
behandelt die Ausnahme und ermittelt mithilfe des Operators instanceof
, welche Art von Ausnahme vorliegt:
Es ist eine gute Übung, etwas mit den gefangenen Ausnahmen zu machen.
Was passiert hier ist, dass, wenn es einen Fehler gibt (sagen Laden einer Seite fehlschlägt) eine Ausnahme in einem Ihrer try-Blöcke geworfen wird. Der entsprechende catch-Block packt ihn und sagt "diese Exception wurde behandelt", aber in Wirklichkeit hast du nichts damit gemacht.
Versuchen Sie, einen Ausdruck zu erstellen (e.Message); innerhalb Ihrer catch-Blöcke, um genau herauszufinden, welcher Fehler die Seite verursacht, laden Sie nicht und fügen dann Code zu Ihrem catch-Block hinzu, um diesen Fehler zu beheben.
Tags und Links javascript exception-handling error-handling try-catch