« デバッガの活用 | メイン | 大文字と小文字 »

Errorクラス

Errorクラスはスクリプト実行時にあらかじめ設定した条件が発生したときに例外処理を行うためのもので、デバッグの目的で利用するものではありません。Flash Playerの実行時エラーのイベントを自動的に処理するというものでもありません。
少し難しいですがここでErrorクラスを利用した例を示しておきましょう。次の例では、テキストフィールドmyURLに入力されたURLをチェックして、URLが空だった場合あるいは"http:"から始まっていないときにエラー処理を行います。エラーがない場合には指定のURLをブラウザで開きます。

sampleファイル→errorurl.fla

フレームアクショント:フレーム1
//webBtnボタンを設定する
webBtn.onRelease = function() {
  try {
    errMsgfld.text = ""; //エラーフィールドのクリア
    var testURL = myURL.text; // URLを取り込む
    var theURL:String = urlcheck(testURL); // URLのチェック
    getURL(theURL, "_blank"); // Webページの移動
  } catch (e_err:Error) {
    errMsg.text = "エラー;" + e_err.message;
  }
};
//URLをチェックする
function urlcheck(url:String):String {
  if (url == "") {
    throw new Error("URLが空です。");
  } else if (url.substr(0, 5) != "http:") {
    throw new Error("URLはhttp:から書いてください。");
  }
  return url;
}

このスクリプトを試すには、ステージにボタン、入力テキスト、ダイナミックテキストを配置し、プロパティインスペクタでそれぞれにwebBtn、myURL、errMsgというインスタンス名を付けます。そして、メインのタイムラインのフレーム1にこのフレームアクションを書き込みます。入力テキストmyURLにURLを書き込んでwebBtnボタンをクリックするとURLがチェックされます。urlcheck()メソッドに渡された引数urlの値が適当な値であるかどうかはif文でチェックします。問題なければ引数urlの値をそのままreturnで戻します。

図2-2-5 URLを入力するフィールドが空のままボタンをクリックしたとき。

図2-2-6 URLが"http:"からはじまっていなかったとき。

このスクリプトで注目する箇所は、webBtnボタンのonReleaseハンドラではtry~catchのブロック、urlcheck()メソッドではthrowです。先にurlcheck()メソッドを見るとわかるように、引数のurlが不適当だった場合にはErrorクラスのインスタンスを生成してそれをthrowしています。throwされたインスタンスはurlcheck()メソッドを呼び出したonReleaseハンドラのcatchブロックが受け取りe_err変数に入いります。e_errインスタンスのmessageプロパティにはErrorクラスでインスタンスを作る際に引数にしたメッセージ文が入ってます。なお、try~catchのブロックの最後に必ず実行するfinallyブロックを付けることができます。

note:
Errorクラスを拡張したカスタムクラスのErrorインスタンスをスローすれば、複数のcatchブロックで個別に受け取れます。その場合は引数のタイプ指定でインスタンスを振り分けます。

投稿者 oshige : 2005年2月11日 12:55