2011-12-09 5 views

答えて

2

エラーがスローされる理由と理由はかなり異なります。

あなたの最善の策は、慎重のActionScriptマニュアルを読み、(例えばIOErrorEventSecurityErrorEventなど)ErrorEvents明示を持っているすべてのエラーに対処するためにリスナーを追加することです。これらは、通常、ネットワークおよび/またはファイルアクセス、およびセキュリティの問題に関連しています。

他のほとんどのエラーについては、try {} catch() {} finally {}ステートメントがあります。 This tutorialの方がいいかもしれません。

その他すべてが失敗した場合は、UncaughtErrorEventがあります。

しかし、実際には、魔法の弾丸ではなく、最後の手段としてそのコードを使用するべきです。エラーの処理が最善であること:a)エラーが最初にスローされないようにしようとしています(すべての変数が、 nullのテストなど)、およびb)アプリケーションを実行し安定した状態に保つために、明示的にキャッチして予期したランタイムエラーを処理する。

+0

Flex 3とAir 1.5を使用している場合、UncaughtErrorEventを使用できません。 – Adam

+0

いいえ、残念ながらUncaughtErrorEventには少なくともAIR 2またはFlex 4が必要です。その前にエラーをグローバルに捕捉するメカニズムはわかりません。しかし、それ以外のことについて私が言ったことは、それにもかかわらず、真実です。エラーが起こらないように徹底し、可能な限り、予期されるエラーをキャッチします。あなたのコードがうまく書かれていれば、キャッチされていないエラーはないはずです。 – weltraumpirat

0

あなたには2つのオプションがあります。ご存じのように、特定の非同期操作で例外処理が常に可能なわけではありません。

まず、エラーの原因となっている非同期操作の原因となるオブジェクトを知る必要があります。最も賢明なアプローチは、このオブジェクトに必要なエラーイベントハンドラを追加することです。

たとえば、URLLoaderは非同期操作を実行します。それはエラーイベントリスナを追加することによってのみ処理できます。たとえば:

var loader: URLLoader = new URLLoader(); 
loader.addEventListener(Event.COMPLETE, completeHandler); 
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 

もう一つの「キャッチオール」オプションは、Flash Player 10.1の新機能UncaughtErrorEventのadvanageを取ることです。これを行うには、キャッチされていないエラーハンドラをメインアプリケーションのローダにアタッチする必要があります。これはすべてをキャッチします!例えば:それは代わりに取り組むと適切に問題を処理する例外の嚥下を促進するよう

loader.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, loaderErrorHandler); 

private function loaderErrorHandler(e:UncaughtErrorEvent):void { 
    if(event.error is Error) { 
    // handle error from embedded SWF 
    } 
    // suppress error dialog 
    e.preventDefault(); 
} 

は最後のオプションは、最良のアプローチではないかもしれません。それにもかかわらず、特定の固有の状況(SWFを埋め込む)では有効です。

0

Flash Playerの標準バージョンを実行している場合、ウィンドウは表示されません。

これは、オーサリングプレーヤーで出力 パネルにメッセージとして、とにエントリとして、唯一 ブラウザプラグインやスタンドアローンプレーヤーのデバッガバージョンではダイアログボックスとして現れます のログファイルAdobe Flex Builder 3リリースの バージョンのFlash PlayerまたはAIRでは、まったくマニフェストされません。

出典:here

+0

...これは、エラーはスローされず、プログラムがクラッシュしないことを意味しません。あなたはちょうど窓を見ないでしょう。 – weltraumpirat

+0

...はい。それがアダムに求められたことです。 – LoremIpsum

+0

...実際は、いいえ:「私のアプリケーション内でエラーを処理できるように」 – weltraumpirat

関連する問題