Flash Player 10.1, der heute in der zweiten Betaversion erschienen ist, führt das Global Error Handling ein. Es besteht die Möglichkeit, alle möglicherweise auftretenden Fehler-Events, die nicht behandelt werden, mit einer einzigen Routine abzufangen. Dies bringt den Vorteil, dass problemlos alle Fehler erfasst und protokolliert werden können. Da dies auch mit dem Release Flash Player funktionieren soll, können auch Fehler beim Nutzer im laufenden Betrieb erkannt werden.
UncaughtErrorEvent
Neu ist das UncaughtErrorEvent
. Durch Registrierung eines Eventhandlers für das Event UncaughtErrorEvent.UNCAUGHT_ERROR
können alle nicht abgefangenen Events verarbeitet werden. Das UncaughtErrorEvent
wird entweder mit einem Loaderinfo
oder einem Loader
verknüpft.
LoaderInfo.uncaughtErrorEvents
: to detect uncaught errors in code defined in the same SWF.
Loader.uncaughtErrorEvents
: to detect uncaught errors in code defined in the SWF loaded by a Loader object.
Popups beim Debug Player unterdrücken
Wenn ein Flashfile mit der Debug-Version des Flash Player ausgeführt wird, taucht bei einem Fehler das oftmals lästige Popup auf. Dieses kann nun mit der Methode preventDefault()
verhindert werden.
Beispiel für Global Error Handling
Um das Beispiel zu betrachten, benötigt man den Flash Player 10.1 in der neusten Version. Es wird versucht, ein File zu laden, das nicht existiert. Der Fehler wird abgefangen und in einer Alert-Box angezeigt.
[kml_flashembed publishmethod=“dynamic“ fversion=“10.1.0″ movie=“/wp-content/uploads/2009/12/GlobalErrorHandlingDemo.swf“ width=“400″ height=“300″ targetclass=“flashmovie“]
[/kml_flashembed]
Hier der passende Quellcode dazu.
[xml]
[/xml]
Link: UncaughtErrorEvent (Flash Doku)
Link: Flash Player 10.1 Beta
[ad]
Hier noch als Abbildung, für alle die den Flash Player 10.1 Beta 2 noch nicht installiert haben:
http://twitpic.com/tzxj3
D.h. alle Fehlermeldungen, die ich nicht über das globale Event UncaughtErrorEvent.UNCAUGHT_ERROR abgefangen werden sind auch nicht sichtbar? Gibt es einen Standardlog für Fehlermeldungen, d.h. wenn ich die Fehler nicht anzeige werden diese irgendwie trotzdem geloggt?
Zu erwartende Fehler behandelst du wie gewohnt und fängst sie ab, z.B.
try {
…
} catch (e:Error) {
…
}
Alle anderen Fehler werden bisher im Release Flash Player nicht weiter behandelt/erkannt, im Debug Flash Player erscheint das Popup mit dem Fehlerhinweis. Diese nicht zu erwartenden Fehler kannst du nun mit dem Global Error Handling behandeln und sie z.B. loggen (musst du selbst implementieren, werden nicht automatisch irgendwo geloggt).
Ok, das war meine Frage: ob der FP selbständig einen Log anlegt. Aber gut zu wissen, dass es jetzt einfacher ist z.B. eine Logdatei zu erstellen. Vielen Dank!