我偶爾會遇到Flex框架引發的異常。通常來自呈現itemRenderer等的ListBase代碼。我正在尋找技術來找出哪怕是我的ListBase實例甚至拋出錯誤。用於調試Flex Framework錯誤的技巧
困難在於當調用堆棧的頂部在callLaterDispatcher()
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at mx.controls.listClasses::ListBase/addToFreeItemRenderers()
at mx.controls.listClasses::ListBase/reduceRows()
at mx.controls.listClasses::ListBase/updateDisplayList()
at mx.controls.listClasses::TileBase/updateDisplayList()
at mx.controls.listClasses::ListBase/validateDisplayList()
at mx.managers::LayoutManager/validateDisplayList()
at mx.managers::LayoutManager/doPhasedInstantiation()
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/callLaterDispatcher2()
at mx.core::UIComponent/callLaterDispatcher()
源於看着一個斷點我在ListBase中設置:: addToFreeItemRenderers,我可以看到,該項目是空這是被傳遞給函數,像這樣:
protected function addToFreeItemRenderers(item:IListItemRenderer):void
{
// The following item is NULL when the exception is being thrown...
if (item == null) return;
DisplayObject(item).visible = false;
var factory:IFactory = factoryMap[item];
...
我如何找出我需要弄清楚?我之前已經解決了類似的問題,但是我必須使用魔法和巫術,並進行猜測並在我的代碼中調用callLater調用來修復。
謝謝
我要補充一點,我可以隨時猴補丁檢測ListBase和處理項目== NULL條件,但是這可能會最終導致了很多問題。 – taudep 2010-09-15 18:07:12