我目前正在用 ActionScript 3 编写一个客户端,它通过 NetConnection 对象与 Red5 应用程序/媒体服务器通信。服务器通过此连接向客户端发送多种类型的数据,包括视频、音频和远程过程调用。经过一段不确定的时间(有时是 10 秒,有时是 10 分钟)后,我在 Flash 客户端的调试版本的弹出窗口中看到以下错误:
"Error: Error #2030: End of file was encountered."
我正在尝试找出导致此错误的原因,而真正让我抓狂的是我似乎无法抓住它。我意识到该错误可能表明某些低级网络读取失败,但它在调试 Flash 播放器中生成一个弹出窗口这一事实意味着我应该能够捕捉到它。
由于该错误没有关联的堆栈跟踪,我什至在我的基本 Sprite 对象上添加了一个未捕获的异常处理程序:
public class MyClient extends Sprite
{
public function FOWClient()
{
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
}
private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
{
trace("UNCAUGHT EXCEPTION!!!");
}
}
如果我故意抛出一些错误,我的未捕获异常处理程序将被正确调用,但发生这种Error #2030
情况时它永远不会被调用。
所以我真的可以接受两种结果:
- 我怎么能捕捉到这个“遇到文件结尾”错误并在代码中处理它?
- 如果我无法捕捉到它,是否有任何关于导致它的原因以及我如何解决它的想法?
我很确定我已经将其范围缩小到与从我的服务器到我的客户端进行的 RPC 调用有关,因为当我禁用这些调用但保留音频和视频时,我看不到问题。不幸的是,除此之外,我还没有任何好的想法。
任何帮助表示赞赏。谢谢!