エラー処理の基礎

Flash Player 9 以降、Adobe AIR 1.0 以降

ランタイムエラーは、ActionScript コードで生じた何らかの問題であり、ActionScript コンテンツの実行が意図的に中止されます。ActionScript コードをユーザーにとってスムーズに動作させるには、アプリケーションにエラーを処理(エラーの修正、解決、または少なくとも何が発生したかをユーザーに通知)するコードを記述します。この処理をエラー処理と言います。

エラー処理は広範な概念であり、コンパイル時または実行時に発生する様々な種類のエラーに対する応答も含まれます。多くの場合コンパイル時に発生するエラーは比較的簡単に特定できます。SWF ファイルの作成処理を完了するには、こうしたエラーを修正してください。

ランタイムエラーが発生するには、誤ったコードが実際に実行されることが必要であるために、その検出はより難しくなります。 if..then..else ステートメントなど、プログラムのセグメントにコードの分岐がいくつか存在する場合は、実際のユーザーが使用する可能性があるあらゆる入力値ですべての条件についてテストし、コードにエラーが含まれないことを確認します。

ランタイムエラーはプログラムエラーと論理エラーの 2 つのカテゴリに分類できます。プログラムエラーは、メソッドパラメーターに誤ったデータ型を指定するなど、ActionScript コード内の誤りです。論理エラーは、銀行業務アプリケーションで利率計算に誤った数式を使用するなど、プログラムの論理ロジック(データチェックおよび値操作)の誤りです。どちらのタイプのエラーも、アプリケーションの入念なテストにより事前に検出および修正できることが少なくありません。

理想的には、エンドユーザーにリリースする前に、アプリケーションのすべてのエラーを識別して削除することが望まれます。ただし、すべてのエラーを予見または防止することはできません。 例えば、管理下にない特定の Web サイトから ActionScript アプリケーションが情報をロードする場合を考えます。ある時点でその Web サイトが使用可能でなければ、該当する外部データに依存するアプリケーションの一部分が正しく動作しません。このような未知の状況に備えて安全なエラー処理を行うことは、エラー処理の最も重要な要素です。ユーザーはアプリケーションの使用を続行できること、または少なくとも動作しない理由をわかりやすく説明するエラーメッセージが表示されることを求めています。

ActionScript では、ランタイムエラーは次の 2 つの方法で表されます。

  • Error クラス : 多くのエラーに Error クラスが関連付けられています。 エラーが発生すると、Flash ランタイム(Flash Player や Adobe AIR など)により、該当する特定のエラーに関連付けられた特定の Error クラスのインスタンスが作成されます。コードでは、エラーオブジェクトに含まれる情報を使用してエラーに対して適切な対処を行うことができます。

  • エラーイベント:Flash ランタイムが通常どおりにイベントをトリガーしたときにエラーが発生することがあります。その場合、代わりにエラーイベントがトリガーされます。各エラーイベントにはクラスが関連付けられています。Flash ランタイムは、該当クラスのインスタンスをエラーイベントにサブスクライブされたメソッドに渡します。

特定のメソッドでエラーまたはエラーイベントをトリガーできるかどうかについては、『 Adobe Flash Platform 用 ActionScript 3.0 リファレンスガイド 』で、そのメソッドの説明を参照してください。

重要な概念と用語

次の参照リストに、エラー処理ルーチンのプログラミングに関する重要な用語を示します。

非同期
即時に結果を得られず、イベントの形式で結果(またはエラー)が得られるメソッドの呼び出しなどのプログラムコマンド。

キャッチ
例外(ランタイムエラー)が発生し、その例外をコードで認識したとき、コードが例外を「 キャッチ 」したと言います。例外がキャッチされると、Flash ランタイムは他の ActionScript コードに例外を通知することを停止します。

デバッガーバージョン
ユーザーにランタイムエラーを通知するコードを含む、特殊なバージョンの Flash ランタイム(Flash Player デバッガーバージョンや AIR Debug Launcher(ADL)など)。大半のユーザーが使用する標準バージョンの Flash Player または Adobe AIR では、ActionScript コードによって処理されないエラーは無視されます。Adobe Flash CS4 Professional および Adobe Flash Builder に含まれるデバッガーバージョンでは、未処理のエラーが発生した場合に警告メッセージが表示されます。

例外
アプリケーションの実行中に発生し、Flash ランタイムが単独で解決できないエラー。

再スロー
コードが例外をキャッチした場合、Flash ランタイムは他のオブジェクトに例外を通知しなくなります。他のオブジェクトで例外を受け取る必要がある場合は、コードで例外を「再スロー」して、通知処理を再度開始する必要があります。

同期
同じコードブロック内で応答を使用できるように即時に結果を提供する(またはエラーをスローする)メソッドの呼び出しなどのプログラムコマンド。

スロー
エラーが発生したことを Flash ランタイムに通知する(したがって、他のオブジェクトおよび ActionScript コードにも通知する)処理をエラーの「 スロー 」と言います。