【发布时间】:2011-10-22 23:51:09
【问题描述】:
我遇到了一个让我发疯的问题。 最近,出于性能原因,我将 BlazeDS 配置为使用 Array 而不是 ArrayCollection。此外,我调整了模板以生成 Array 属性。
一切都不顺利。除了导致 TypeError 的一个函数之外的所有函数:错误 #1034。这些在调用结果回调之前被抛出。它声称在将 ArrayCollection 转换为 Array 时遇到问题。我删除了生成的类型以使 Flex 改为使用对象,但这些类型不包含任何 ArrayCollections。我现在的问题是:如何获取事件处理程序中抛出的错误的堆栈跟踪?
我已经在我的所有模块中添加了 unhandledExceptions 处理程序,如果用户交互触发的代码中发生错误,它们会被调用,但它们似乎无法捕获事件处理程序抛出的东西。
如何跟踪这些错误?
克里斯
PS:课程如下: 包 de.upw.ps.ucg.model.ucg.scheduler {
[Bindable]
[RemoteClass(alias="de.upw.ps.ucg.model.ucg.scheduler.Task")]
public class Task extends TaskBase {
}
}
还有:
package de.upw.ps.ucg.model.ucg.scheduler {
import de.upw.ps.ucg.model.oval.common.OvalVersionedIdentifier;
import flash.utils.IExternalizable;
[Bindable]
public class TaskBase {
public function TaskBase() {}
private var _aborted:Boolean;
private var _characteristicsId:String;
private var _currentExecutorPhase:JobExecutorPhase;
private var _definitionSetName:String;
private var _definitionSetVid:OvalVersionedIdentifier;
private var _endTime:Date;
private var _enqueueTime:Date;
private var _environmentId:String;
private var _environmentName:String;
private var _messages:Array;
private var _numberOfDefinitions:int;
private var _processedNumberOfTests:int;
private var _resultsId:String;
private var _schedulerJob:SchedulerJob;
private var _startTime:Date;
private var _statusMessage:String;
private var _taskId:String;
private var _totalNumberOfTests:int;
public function set aborted(value:Boolean):void {
_aborted = value;
}
public function get aborted():Boolean {
return _aborted;
}
public function set characteristicsId(value:String):void {
_characteristicsId = value;
}
public function get characteristicsId():String {
return _characteristicsId;
}
public function set currentExecutorPhase(value:JobExecutorPhase):void {
_currentExecutorPhase = value;
}
public function get currentExecutorPhase():JobExecutorPhase {
return _currentExecutorPhase;
}
public function set definitionSetName(value:String):void {
_definitionSetName = value;
}
public function get definitionSetName():String {
return _definitionSetName;
}
public function set definitionSetVid(value:OvalVersionedIdentifier):void {
_definitionSetVid = value;
}
public function get definitionSetVid():OvalVersionedIdentifier {
return _definitionSetVid;
}
public function set endTime(value:Date):void {
_endTime = value;
}
public function get endTime():Date {
return _endTime;
}
public function set enqueueTime(value:Date):void {
_enqueueTime = value;
}
public function get enqueueTime():Date {
return _enqueueTime;
}
public function set environmentId(value:String):void {
_environmentId = value;
}
public function get environmentId():String {
return _environmentId;
}
public function set environmentName(value:String):void {
_environmentName = value;
}
public function get environmentName():String {
return _environmentName;
}
public function set messages(value:Array):void {
_messages = value;
}
public function get messages():Array {
return _messages;
}
public function set numberOfDefinitions(value:int):void {
_numberOfDefinitions = value;
}
public function get numberOfDefinitions():int {
return _numberOfDefinitions;
}
public function set processedNumberOfTests(value:int):void {
_processedNumberOfTests = value;
}
public function get processedNumberOfTests():int {
return _processedNumberOfTests;
}
public function set resultsId(value:String):void {
_resultsId = value;
}
public function get resultsId():String {
return _resultsId;
}
public function set schedulerJob(value:SchedulerJob):void {
_schedulerJob = value;
}
public function get schedulerJob():SchedulerJob {
return _schedulerJob;
}
public function set startTime(value:Date):void {
_startTime = value;
}
public function get startTime():Date {
return _startTime;
}
public function set statusMessage(value:String):void {
_statusMessage = value;
}
public function get statusMessage():String {
return _statusMessage;
}
public function set taskId(value:String):void {
_taskId = value;
}
public function get taskId():String {
return _taskId;
}
public function set totalNumberOfTests(value:int):void {
_totalNumberOfTests = value;
}
public function get totalNumberOfTests():int {
return _totalNumberOfTests;
}
}
}
这两个类都是由我的 maven 构建从相应的 Java 类生成的,并且类型确实很好地结合在一起。
【问题讨论】:
-
不确定我是否理解。你刚才说他们在抛出错误......
-
问题是我在执行第一个回调之前得到了这些错误,所以我想这与从服务器发回的数据的反序列化问题有关。我检查过,响应不包含 ArrayCollection(因此不应该抛出这样的错误)。我的问题是调试器通常会在这种情况下挂起,我可以看到问题出在哪里。在这种情况下,它不会挂起,并且会在没有堆栈跟踪的情况下输出简单的跟踪消息。因此我不知道哪里出了问题。
-
你说得对,应该是反序列化的时候。您是否有任何将 as3 类与 java DTO 相关联的 RemoteClass 元数据?您应该尝试显示更多代码。
-
我添加了我正在使用的类。作为补充......即使我使用默认的“对象”类进行反序列化,我实际上也遇到了这些错误(这真的很诡异)......所以我真正的问题是:我怎样才能看到出了什么问题,尤其是在哪里.
-
你确定错误甚至在反序列化中?也许它会在之后发生。
标签: apache-flex actionscript amf typeerror