3

Flash AS3 では、クラス全体のエラーをキャッチするために、単一のtry catchブロックを記述したいと考えています。
たとえば、myClass.as には多くの関数があります。この関数のエラーをキャッチするために、各関数に try catch ブロックを記述したくありません。
これを行う方法はありますか?

ありがとうございました!

4

3 に答える 3

8

できません!AS3以外の言語でも、AOPアプローチを使用してそれを行うことを除いて、そのような簡単な方法はありません。

ベスト プラクティスは、クラスにエラー (例外) をバブルさせ、上位層にエラーをキャッチして処理させることです。

編集- コメントについて

実際、アイデアは自然な方法です..それでも、考えられるすべてのエラーを手動でキャッチする必要があります。例を挙げます。この例の目的は、下位層と上位層を明確にするためだけのものであることに注意してください。

たとえば、中間層 (ビジネス プロセス) にクラスがあるとします。

public class MyBussiness {
    public function loadImages(){
        //for example here is a block of method
        //possibly throws exception. 
    }

    public function getLoan(){
        //lets assume here too
    }
}

より高いレイヤー(私はあなたのビュー - MXMLで想定しています)では、次のような例外をキャッチします:

var myBussiness:MyBussiness = new MyBussiness():
try {
    myBussiness.loadImages();
    //any other sequence process
    myBussiness.getLoan();
}
catch(error:Error){
    //here you process error
    //show it to user or make LOG
}

それでも、期待どおりの魔法を実行することはできませんが、ベスト プラクティスです。try catch はコストがかかるため、Rember はエラーをスローする可能性のあるコードにのみ try catch を配置します

于 2010-08-11T06:20:35.210 に答える
4

最善の方法は、trycatchを使用することです。

try{
  //your command
} catch(e:Error){
  //your command
}
于 2010-08-11T06:30:51.440 に答える