我目前正在 ActionScript 3 中编写一个客户端,该客户端通过 NetConnection 对象与 Red5 应用程序/媒体服务器进行通信。服务器通过此连接向客户端发送多种类型的数据,包括视频、音频和远程过程调用。经过不确定的时间(有时 10 秒,有时 10 分钟)后,我在 Flash 客户端的调试版本的弹出窗口中看到以下错误:

"Error: Error #2030: End of file was encountered."

我正在试图找出导致此错误的原因,而真正让我抓狂的是我似乎无法抓住它。我意识到该错误可能表明某些低级网络读取失败,但它在调试闪存播放器中生成弹出窗口的事实意味着我应该能够捕获它。

由于错误没有关联的堆栈跟踪,我什至在我的基本 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 发生。

所以实际上有两种结果是我可以接受的:

  1. 我到底怎样才能捕获这个“遇到文件结尾”错误并在代码中处理它?
  2. 如果我无法捕捉到它,是否有关于导致它的原因以及如何解决该问题的想法?

我很确定我已经将范围缩小到与从服务器到客户端进行的 RPC 调用有关,因为当我禁用这些调用但保留音频和视频时,我没有看到问题。不幸的是,除此之外我还没有任何好的想法。

任何帮助表示赞赏。谢谢!

有帮助吗?

解决方案

如果未添加正确的侦听器,则会引发其中一些错误。

你在听吗 asyncErrorioError 来自您的网络连接的事件?

如果没有,请尝试一下。

其他提示

try
{

}
catch( e : EOFError )
{
    trace( e );     // EOFError: Error #2030: End of file was encountered.
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top