In Flash AS3 Come comporre singolo codice tentativo di cattura, al fine di rilevare eventuali errori in tutta la classe?

StackOverflow https://stackoverflow.com/questions/3455577

Domanda

In Flash AS3 voglio scrivere il singolo try cattura di blocco al fine di rilevare eventuali errori di tutta la classe.
Per esempio, ho un sacco di funzioni in myClass.as. Faccio scrittura non voglio in ogni blocchi funzione di prova di cattura per gli errori di cattura in questa funzione.
C'è qualche metodo per fare questo?

Grazie!

È stato utile?

Soluzione

non si può! non esiste un modo così semplice come quello, anche in altra lingua sia quello AS3 tranne che utilizzano l'approccio AOP per farlo.

La pratica migliore è lasciare che si classi bolla l'errore (eccezione) e lasciare che il fermo livello superiore ed elaborare l'errore.

Modifica - per quanto riguarda coment

In realtà l'idea è il modo naturale .. ancora avete bisogno di recuperare manualmente ogni possibile errore. Io ti do esempio. Si noti che lo scopo del esemplificativo per chiarezza tra lo strato inferiore e superiore strato.

per esempio di avere una classe nello strato metà (i processi aziendali):

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

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

nello strato higer (presumo a suo parere - MXML) si cattura l'eccezione come muggito:

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
}

ancora non può fare una magia come ci si aspetta, ma è la migliore pratica. Rember solo mettere tentativo di cattura solo sul codice che ha la possibilità di gettare errore perché try fermo è costoso.

Altri suggerimenti

Il modo migliore è usare try cattura:

try{
  //your command
} catch(e:Error){
  //your command
}

è possibile vedere tutti gli errori non utilizzati nel programma utilizzando classe UncaughtErrorEvent.

Quindi, può essere quello che vuoi. C'è un esempio dalla documentazione (è possibile inserire addEventListener nel costruttore della classe principale):

package
{
import flash.display.Sprite;
import flash.events.ErrorEvent;
import flash.events.MouseEvent;
import flash.events.UncaughtErrorEvent;

public class UncaughtErrorEventExample extends Sprite
{
    public function UncaughtErrorEventExample()
    {
        loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);

        drawUI();
    }

    private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
    {
        if (event.error is Error)
        {
            var error:Error = event.error as Error;
            // do something with the error
        }
        else if (event.error is ErrorEvent)
        {
            var errorEvent:ErrorEvent = event.error as ErrorEvent;
            // do something with the error
        }
        else
        {
            // a non-Error, non-ErrorEvent type was thrown and uncaught
        }
    }

    private function drawUI():void
    {
        var btn:Sprite = new Sprite();
        btn.graphics.clear();
        btn.graphics.beginFill(0xFFCC00);
        btn.graphics.drawRect(0, 0, 100, 50);
        btn.graphics.endFill();
        addChild(btn);
        btn.addEventListener(MouseEvent.CLICK, clickHandler);
    }

    private function clickHandler(event:MouseEvent):void
    {
        throw new Error("Gak!");
    }
}

}

Vedere la docs , per favore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top