これで 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(); // ココ重要!
}
}
}