當應用程式載入時,會在 Flex 應用程式中呼叫
initApp()
方法,或在 Flash Professional 應用程式中執行時間軸 (非函數) 程式碼。此程式碼會定義 Validator 類別所要驗證的樣本 XML 封包。此時會執行下列程式碼:
employeeXML =
<employee id="12345">
<firstName>John</firstName>
<lastName>Doe</lastName>
<costCenter>12345</costCenter>
<costCenter>67890</costCenter>
</employee>;
}
XML 封包稍後將顯示在「舞台」的 TextArea 組件實體上。這個步驟可以讓您在嘗試重新驗證 XML 封包前加以修改。
當使用者按下「驗證」按鈕時,就會呼叫
validateData()
方法。這個方法會使用 Validator 類別中的
validateEmployeeXML()
方法,驗證 employee XML 封包。下列程式碼會顯示
validateData()
方法:
function validateData():void
{
try
{
var tempXML:XML = XML(xmlText.text);
Validator.validateEmployeeXML(tempXML);
status.text = "The XML was successfully validated.";
}
catch (error:FatalError)
{
showFatalError(error);
}
catch (error:WarningError)
{
showWarningError(error);
}
catch (error:Error)
{
showGenericError(error);
}
}
首先,會使用 TextArea 組件實體
xmlText
的內容,建立暫時性的 XML 物件。接著呼叫自訂 Validator 類別 (com.example.programmingas3/errors/Validator.as) 中的
validateEmployeeXML()
方法,並將暫時性的 XML 物件當做參數來傳遞。如果 XML 封包有效,
status
Label 組件實體就會顯示成功的訊息,而應用程式也會結束。如果
validateEmployeeXML()
方法擲回自訂錯誤 (也就是 FatalError、WarningError 或一般 Error),則會執行適當的
catch
陳述式,並呼叫
showFatalError()
、
showWarningError()
或
showGenericError()
方法。這些方法都會在名為
statusText
文字區域中顯示適當的訊息,明確通知使用者發生了什麼錯誤。每一種方法也都會以明確的訊息,更新
status
Label 組件實體。
如果在嘗試驗證 employee XML 封包時發生嚴重錯誤,則會在
statusText
文字區域中顯示錯誤訊息,而且
xmlText
TextArea 組件實體和
validateBtn
Button 組件實體都會停用,如下列程式碼所示:
function showFatalError(error:FatalError):void
{
var message:String = error.message + "\n\n";
var title:String = error.getTitle();
statusText.text = message + " " + title + "\n\nThis application has ended.";
this.xmlText.enabled = false;
this.validateBtn.enabled = false;
hideButtons();
}
如果發生的是警告錯誤而非嚴重錯誤,錯誤訊息同樣會顯示在
statusText
TextArea 實體中,但是並不會停用
xmlText
TextField 和 Button 組件實體。
showWarningError()
方法會在
statusText
文字區域中顯示自訂錯誤訊息。此訊息也會要求使用者決定,看是要繼續驗證 XML 還是要取消指令碼。下列摘錄會顯示
showWarningError()
方法:
function showWarningError(error:WarningError):void
{
var message:String = error.message + "\n\n" + "Do you want to exit this application?";
showButtons();
var title:String = error.getTitle();
statusText.text = message;
}
當使用者按一下「是」或「否」按鈕時,會呼叫
closeHandler()
方法。下列摘錄會顯示
closeHandler()
方法:
function closeHandler(event:CloseEvent):void
{
switch (event.detail)
{
case yesButton:
showFatalError(new FatalError(9999));
break;
case noButton:
statusText.text = "";
hideButtons();
break;
}
}
如果使用者選擇按一下「是」來中止指令碼,則會擲回 FatalError,並造成應用程式終止。