我偶尔会弹出这个错误:
错误#2044:未处理的错误:文本=
我的代码在这里:
private var _myLoader:URLLoader = new URLLoader();
public function load():void {
var finalURL = http://xxxxx.com/service_staging.php/next;
var myRequest:URLRequest = new URLRequest(finalURL);
// add event listeners
this._myLoader.addEventListener(Event.COMPLETE, this._completeHandler);
this._myLoader.addEventListener(Event.OPEN, this._openHandler);
this._myLoader.addEventListener(ProgressEvent.PROGRESS, this._progressHandler);
this._myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this._securityErrorHandler);
this._myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, this._httpStatusHandler);
this._myLoader.addEventListener(IOErrorEvent.IO_ERROR, _ioErrorHandler);
try {
this._myLoader.load(myRequest);
} catch (_error:SecurityError) {
Logger.error('JSONRequest.as - catch: A SecurityError has occurred:', _error);
} catch(_error:IOErrorEvent) {
Logger.error("JSONRequest.as - catch: IOErrorEvent:", _error);
} catch(_error:Error) {
Logger.error("JSONRequest.as - catch: Error catch: ", _error);
}
}
//----------------------------------------------------------
private function _completeHandler(event:Event):void {
Logger.info('JSONRequest.as - _completeHandler()');
Logger.info('this._myLoader.data', this._myLoader.data);
// decode the object
this._JSONObject = JSON.decode(this._myLoader.data);
// dispatch the complete event
this.dispatchEvent(new Event(Event.COMPLETE));
}
//----------------------------------------------------------
private function _ioErrorHandler(_error:IOErrorEvent):void {
Logger.error('JSONRequest.as - _ioErrorHandler()');
dispatchEvent(new ErrorEvent(ErrorEvent.ERROR));
}
//----------------------------------------------------------
private function _securityErrorHandler(_event:SecurityErrorEvent):void {
Logger.info("JSONRequest.as - _securityErrorHandler(): ", _event);
dispatchEvent(new ErrorEvent(ErrorEvent.ERROR));
}
//----------------------------------------------------------
private function _openHandler(event:Event):void {
Logger.info("JSONRequest.as - openHandler: " + event);
}
//----------------------------------------------------------
private function _progressHandler(event:ProgressEvent):void {
Logger.info("JSONRequest.as - progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal);
}
//----------------------------------------------------------
private function _httpStatusHandler(event:HTTPStatusEvent):void {
Logger.info("JSONRequest.as - httpStatusHandler: " + event);
Logger.info("status: " + event.status);
}
//----------------------------------------------------------
public function get JSONObject():Object {
return this._JSONObject;
}
//----------------------------------------------------------
如果从服务获取JSON数据时出现问题,我已经处理了,但即使我正在监听它,这个错误似乎仍然会弹出。
非常感谢任何想法。
感谢。
答案 0 :(得分:2)
您应该将这些侦听器添加到_myLoader.contentLoaderInfo
this._myLoader.contentLoaderInfo.addEventListener(Foo.BAR, onFooBar);
答案 1 :(得分:1)
要从URLLoader捕获未处理的IOError,您需要UncaughtErrorEvents
的帮助:
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, onGlobalError);
private function onGlobalError(e:UncaughtErrorEvent):void {
e.preventDefault();
trace("ERROR: " + e.toString());
}
//Trigget it...
var urlLoader: URLLoader = new URLLoader();
urlLoader.load(new URLRequest("somewhere/nowhere"));
答案 2 :(得分:0)
首先,您需要有关此错误的更多信息...堆栈,ErrorEvent的目标等。
您是否尝试过收听UncaughtErrorEvent.UNCAUGHT_ERROR? 以下示例对此进行了详细说明: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/LoaderInfo.html#uncaughtErrorEvents 并允许您捕获任何未捕获的错误,包括未处理的ErrorEvent错误 并选择做什么。
我首先建议尽可能多地获取调试信息,以设置断点var errorEvent:ErrorEvent = event.error as ErrorEvent;
希望在这个阶段你有一个修复,或者至少有一个解决方法(只需在此断点后添加你的错误处理代码) )