2011-09-11 139 views
2

如果滿足某些條件,我需要添加一些代碼,以使我的Flex應用程序崩潰。我需要它能夠在Flex應用程序所處的任何狀態下工作(也許它沒有完全初始化,可能還有一些組件仍在加載等)崩潰Flex應用程序的最可靠方法是什麼?

什麼是最可靠的方法來實現它?

+0

拋出異常? –

+0

它保證會崩潰的應用程序?如果我沒有弄錯,URLLoader會在有一個未捕獲的ioError但會導致應用程序崩潰時拋出異常,是嗎? –

+1

爲什麼你不顯示模式彈出窗口,阻止用戶與你的應用程序進行交互? – moropus

回答

3

嘗試使用unresolved crash bugs之一,例如, this one

public function TestVerify() { 
    try { 
     with (this) { 
      return; 
     } 
    } 
    catch (e) { 
     trace('catch'); 
    } 
    finally { 
     trace('finally'); 
    } 
} 
0

評論有點拖着;但我想發佈一些代碼來證明關於未捕獲異常和崩潰應用程序的一點。所以,在這裏。

如果要引起例外,請使用throw commandError class。未捕獲的異常不會導致應用程序崩潰。

下面是一個可以複製並粘貼並運行的示例。

<?xml version="1.0" encoding="utf-8"?> 
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" applicationComplete="windowedapplication1_applicationCompleteHandler(event)"> 
    <fx:Script> 
     <![CDATA[ 
      import mx.events.FlexEvent; 

      protected function windowedapplication1_applicationCompleteHandler(event:FlexEvent):void 
      { 
       var error : Error = new Error(); 
       throw error; 
      } 

     ]]> 
    </fx:Script> 
    <fx:Declarations> 
     <!-- Place non-visual elements (e.g., services, value objects) here --> 
    </fx:Declarations> 



    <s:Button /> 
</s:WindowedApplication> 

如果您從Flash Builder執行此應用程序,您會看到彈出「標準」錯誤。但是,一旦你點擊解僱,你仍然可以點擊按鈕並與應用進行交互。

未捕獲異常與崩潰應用程序不同;或阻止用戶與應用程序交互。

如果你只是想阻止用戶與應用程序進行交互,你應該可以做一些事情沿FlexGlobals.topLevelApplication.enabled == false;行。但是,在評論中你堅持認爲這不是你想要做的。

+0

呵呵我喜歡最後一句話。 –

相關問題