次の Actionscript 3 コードで try-catch ブロックを使用しています。
try {
this._subtitle = new SubtitleController(subtitlePath, _framerate);
this._subtitle.addEventListener(Event.COMPLETE, subtitleLoaded);
}
catch (e:Error) {
trace('subtitle not found');
}
次に、SubtitleController
コンストラクターは をロードしてsubtitlePath
をスローしようとしますError #2044: Unhandled ioError
が、エラーはtry
ステートメントによってキャッチされません。try
ステートメントが存在しなかったように、エラーが単にスローされます。
確かに、そのコードを次のように置き換えることができます
this._subtitle.addEventListener(IOErrorEvent.IO_ERROR, function (ev:Event) { trace('subtitle not loaded'); });
this._subtitle = new SubtitleController(subtitlePath, _framerate);
this._subtitle.addEventListener(Event.COMPLETE, subtitleLoaded);
そして、それはほとんど機能し、そのエラーのスローを停止しますが、代わりに別のエラーをスローします。
try-catch
しかし、それを行うのがブロックの全体的なポイントではありませんか? では機能しないtry-catch
のに、通常のイベント リスナーでは機能するのはなぜですか?