Wie erfasse ich alle Ausnahmen in Flex?
Wenn ich eine Flex-Anwendung in den debug flash player bekomme ich auch eine exception pop-up, sobald etwas unerwartetes geschah. Allerdings, wenn ein Kunde nutzt die Anwendung, er nicht den debug flash player. In diesem Fall wird er nicht bekommen, eine Ausnahme von pop-up, aber er ist die Benutzeroberfläche nicht funktioniert.
So Unterstützbarkeit Gründen, ich möchte fängt jede Ausnahme, die kann überall passieren, in die Flex UI-und eine Fehlermeldung in einem Flex-interne popup. Durch die Verwendung von Java würde ich nur Kapseln die ganze UI-code in einem try/catch-block, aber mit MXML-Anwendungen in Flex weiß ich nicht, wo ich das durchführen könnte eine solche Allgemeine try/catch.
InformationsquelleAutor der Frage Yaba | 2008-09-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es keine Möglichkeit gibt, benachrichtigt zu werden, auf nicht abgefangene Ausnahmen, die in Flex 3. Adobe sind sich des Problems bewusst, aber ich weiß nicht, ob Sie planen, auf die Schaffung eines workaround.
Die einzige Lösung, so wie es da steht, ist das setzen von try/catch-in der logischen Orte, und stellen Sie sicher, dass Sie hören, wird der FEHLER (oder die SCHULD für webservices) Ereignis-für etwas, das Sie.
Edit: Außerdem, es ist eigentlich unmöglich zu fangen, wird ein Fehler geworfen, die aus einem event-handler. Ich angemeldet haben, eine bug auf der Adobe Bug System.
Update 2010-01-12: Global-error-handling unterstützt nun in Flash 10.1 und AIR 2.0 (beide beta), und wird erreicht durch abonnieren des UNCAUGHT_ERROR Falle LoaderInfo.uncaughtErrorEvents. Der folgende code stammt aus der code-Beispiel in livedocs:
InformationsquelleAutor der Antwort Richard Szalay
Es ist ein bug/feature-request für diese in den Adobe-bug-management-system. Für ihn Stimmen, wenn es für Sie wichtig ist.
http://bugs.adobe.com/jira/browse/FP-444
InformationsquelleAutor der Antwort
Funktioniert es in Flex 3.3.
InformationsquelleAutor der Antwort
Hinweis, dass der Fehler FP-444 (oben) links zu http://labs.adobe.com/technologies/flashplayer10/features.html#developerdie seit Oktober 2009 zeigt, dass dies möglich sein wird, als der 10.1, der derzeit Oct 28, 2009-das ist noch nicht veröffentlichten - also ich denke, wir werden sehen, ob das wahr ist, wenn Sie veröffentlicht wird
InformationsquelleAutor der Antwort Peter V. Mørch
Alternative zu akzeptierten Antworten, mit try-catch. Langsamer, aber einfacher zu Lesen, denke ich.
Natürlich, werden Sie brauchen, um mit einem up-to-date 10.1 playerglobal.swc, um um diesen code zu kompilieren erfolgreich:
http://labs.adobe.com/downloads/flashplayer10.html
InformationsquelleAutor der Antwort aaaidan
Ich bin mit flex 4.
Ich habe versucht
loaderInfo.UncaughtErrorEvents,
aber loaderInfo-Objekt wurde nicht initialisiert, so es gab mir eine null-Verweis-Fehler. Dann habe ich versuchtroot.loaderInfo.UncaughtErrorEvents
und die gleiche Geschichte.Ich habe versucht
sprite.root.UncaughtErrorEvents
, aber es war keine sprite-Objekt, habe ich eine erstellt, aber es hat nicht funktioniert. Schließlich versuchte ichsystemManager.loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR,globalUnCaughtErrorHandler.hanleUnCaughtError);
Und erraten, was, es funktioniert wie Magie.
überprüfen Sie diese
InformationsquelleAutor der Antwort Rose
Funktioniert es in Flex 3.5 und flash player 10:
Dank
InformationsquelleAutor der Antwort Jefferson
Befestigte ich die Ereignis-listener, um die "root", was für mich gearbeitet:
In der Debugversion von Flash Player immer noch Fehler, aber in der nicht-debug-version die Fehler im Flash Player angezeigt wird der dialog box - und dann wird der handler reagieren. Stoppen Sie die Anzeige des Dialogfelds hinzufügen:
also:
Ich war mit diesem in der LUFT, aber ich vermute, es funktioniert für standard-AS3-Projekten zu.
InformationsquelleAutor der Antwort neave
Nun können Sie, mit loader info:
http://www.adobe.com/devnet/flex/articles/global-exception-handling.html
Kasse: loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);
InformationsquelleAutor der Antwort Pablo