class Exception extends Error
{
public var type:String = "Exception";
}
ChildException.as
class ChildException extends Exception
{
public var type:String = "ChildException";
}
ExceptionTest.as
class ExceptionTest
{
function ExceptionTest()
{
try
{
throwsException();
throwsChildException();
}
catch (e:ChildException)
{
trace("ChildException thrown! ("+e.type+")");
}
catch (e:Exception)
{
trace("Exception thrown! ("+e.type+")");
}
finally
{
trace("Finally done.");
}
} private function throwsException(Void):Void
{
trace("throwsException()");
throw new Exception();
} private function throwsChildException(Void):Void
{
trace("throwsChildException()");
throw new ChildException();
}
}
throwsException()
Exception thrown! (Exception)
Finally done.
只输出了由throwsException()抛出的异常,因为在try中抛出异常后立即转到catch,然后到finally结束。
如果注释掉throwsException(),将由throwsChildException()抛出异常,输出如下: