如何在ActionScript 3中的NetConnection上捕获和/或处理“错误#2030:遇到文件结尾”?

时间:2011-03-30 23:27:21

标签: actionscript-3 error-handling netconnection uncaught-exception

我目前正在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发生时它永远不会被调用。

所以我确实有两种结果可以接受:

  1. 我怎么能抓住这个“遇到文件结尾”错误并在代码中处理它?<​​/ li>
  2. 如果我无法抓住它,有什么想法导致它以及我如何解决这个问题?
  3. 我很确定我已经把它缩小到从我的服务器到我的客户端的RPC调用,因为当我禁用它们但是留下音频&amp;视频,我没有看到这个问题。不幸的是,除此之外,我还没有任何好的想法。

    感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:2)

如果未添加适当的侦听器,则会抛出一些错误。

您是否正在通过网络连接收听asyncErrorioError个事件?

如果没有,请试一试。

答案 1 :(得分:0)

try
{

}
catch( e : EOFError )
{
    trace( e );     // EOFError: Error #2030: End of file was encountered.
}