Flash Player 10.1 のエラー処理機能 (非同期エラー編)

良く考えたら、タイトルは 「Flash Player 10.1 と AIR 2 の...」 にすべきでした。

という話は置いておいて、

非同期で行われる処理の場合 (ネットワーク経由のダウンロードとか)、エラーの通知も非同期に行われます。その際、エラーの発生はイベントという手段で通知されます。そのため、非同期エラーの処理は、非同期処理を行うクラスにイベントハンドラーを追加する、という形になります。

非同期エラーを通知するイベントは、以下の 2 種類に分けることができます。

  1. ErrorEvent のサブクラスによる通知
    エラーの種類ごとに提供されるイベントクラスを使用。AsyncErrorEvent、IOErrorEvent など。(一覧はこの 記事の最後にあります)
  2. ステータス通知イベントの属性値による通知
    NetStatusEvent や StatusEvent の属性値を使用。info.level もしくは level 属性の値が error になる。

ネットワーク関連のクラスは、両方の手段を使います。

それぞれ簡単な例を挙げておきます。

ErrorEvent のサブクラスによる通知の例

まず、ErrorEvent の例から。

var loader:URLLoader;
var request:URLRequest;
  
loader = new URLLoader();
// イベントリスナーの追加
loader.addEventListener(IOErrorEvent.IO_ERROR, onError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
 
// ファイルの読み込み
request = new URLRequest();
request.url = "myfile.xml";
loader.load(request);
 
// 非同期エラーの処理用ハンドラー
function onError(event:ErrorEvent):void {
  trace("Error: " + event.text);
  if(event is IOErrorEvent) {
    request.url = "http://www.myserver.jp/myfile.xml";
    loader.load(request);  
  }
}
 

ErrorEvent は text 属性にエラー情報を示すテキストが設定されます。その他は見ての通り、普通のイベント処理とおんなじです。というか、特に意識する必要もないかんじですね。

ステータス通知イベントの例

次に、ステータス通知の例です。

このパターンを持つクラスは、以下の 8 つです。(だと思います - とりあえず今のところ)

こちらもサンプルです。

var videoURL:String = "video.flv";
var nc:NetConnection;
 
nc = new NetConnection();
nc.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);
nc.connect(null);
 
function onNetStatus(event:NetStatusEvent):void {
  if (event.info.level == "error")
  {
    trace("NetStatusError: " + event);
    // その他必要な処理を記述
  }
  else
  {
    // event.info.code の値に応じて適当な処理を記述
  }
}
 
function onSecurityError(event:SecurityErrorEvent):void {
  trace("SecurityError: " + event);
}
 

ステータス通知の場合は、level の値が error かどうかで、エラーの発生を判断します。

エラーイベント一覧

最後に非同期エラー関連のイベント一覧です。

 

トラックバック(0)

トラックバックURL: http://cuaoar.jp/mt4/mt-tb.cgi/85

コメントする

2014年1月

Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
レンタルサーバー

月別 アーカイブ

Powered by Movable Type 4.261