In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

これで wonderfl のコーディング中のランタイムエラーは怖くない!

コーディング中にランタイムエラーが起きると、Flash Debug Playerではエラーダイアログが表示され、不便に思う方は多いのではないでしょうか。

グローバルエラーハンドラーを仕込むことで、エラーダイアログの表示を回避することができます。
http://clockmaker.jp/blog/2010/06/global-error-handler/

ただ、それだとエラー詳細がわからないのでデバッグの支障になります。
幸いにも fork 元で、Wonderfl.log メソッドの存在が明らかになりました。

これを使うことでエラーダイアログを回避しつつ、wonderfl エディターのログエリアにエラーの詳細を表示することができました。
※添付画像参照

これで wonderfl のコーディング中のランタイムエラーは怖くない!
// forked from kacchan6's Wonderfl.log
package {
    import flash.utils.describeType;
    import flash.display.Sprite;
    import flash.events.UncaughtErrorEvent;
    import flash.events.ErrorEvent;
    public class FlashTest extends Sprite {
        
        /** コンストラクター */
        public function FlashTest() {
            
            // グローバルエラーのイベント登録
            loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onUncaughtError);

            // こんなことすると、エラーが起きるよ
            var hoge:Object;
            hoge.moja;

        }
        /** グローバルエラーハンドラー */
        private function onUncaughtError(event:UncaughtErrorEvent):void {
            var message:String;
            
            if (event.error is Error)
                message = Error(event.error).getStackTrace();
            
            else if (event.error is ErrorEvent)
                message = ErrorEvent(event.error).text;
            
            else
                message = event.error.toString();

            Wonderfl.log(message);
            
            event.preventDefault(); // ココ重要!
        }
    }
}