Flash / Flex / ActionScript/Statement/try catch
Содержание
Catch Blocks Example
<source lang="java">
package {
import flash.display.Sprite; public class Main extends Sprite { public function Main() { try { var n:int = sumSomeNumbers(); trace(n); } catch (e:UnrelatedError) { trace("something unrelated happened."); } catch (e:DispleasingNumberError) { trace("somewhere, a number is displeasing."); } catch (e:Error) { trace("something bad happened"); } } protected function sumSomeNumbers():int { var sum:int = 0; for (var i:int = 0; i < 10; i++) { sum += someNumber(); } return sum; } protected function someNumber():int { var n:int = Math.round(Math.random() * 10); if (n < 2) { throw new PatheticallySmallNumberError(); } return n; } }
} class DispleasingNumberError extends Error {} class PatheticallySmallNumberError extends DispleasingNumberError {} class UnrelatedError extends Error {}
</source>
Catching Errors Generated by Flash
<source lang="java">
package{
import flash.display.*; public class Main extends Sprite{ public function Main(){ var object:Object = "Definitely Not a Display Object"; try { var displayObject:DisplayObject = DisplayObject(object); } catch (error:TypeError) { trace("Incompatible cast!"); displayObject = new Sprite(); } addChild(displayObject); } }
}
</source>
Multiple throw statements and multiple catch statements
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){
var sUsername:String = ""; var erToThrow:Error; try { if(sUsername == "") { throw new EmptyStringException(); } if(sUsername == undefined) { throw new UndefinedException(); } } catch (erObject:EmptyStringException) { // Code to handle error. } catch (erObject:UndefinedException) { // Code to handle error. } } }
}
</source>
Using return in catch
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){
changeFlow ( );
} public function changeFlow ( ):void { try { throw new Error("Test error."); } catch (e:Error) { trace("Caught: " + e.message); return; } finally { trace("Finally executed."); } trace("Last line of function."); } }
}
</source>
Using return in try, after throw
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ changeFlow ( ); } public function changeFlow ( ):void { try { throw new Error("Test error."); return; } catch (e:Error) { trace("Caught: " + e.message); } finally { trace("Finally executed."); } trace("Last line of method."); } }
}
</source>
Working with Basic try/catch Statements
<source lang="java">
/* try {
// Code to try.
} catch (erObject:Error) {
// Code to run if the try code throws an error.
}
- /
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){ var sUsername:String = ""; try { if(sUsername == "") { throw new Error(); } trace("The try block ran successfully."); } catch (erObject:Error) { trace("An error was thrown."); } } }
}
</source>