Flash CS3 文件 |
|||
| ActionScript 3.0 程式設計 > 處理錯誤 > 錯誤類型 | |||
當您在開發和執行應用程式時,會遇到不同類型的錯誤和錯誤術語。下列清單介紹主要的錯誤類型和術語:
catch 陳述式。 例如,下列摘錄的程式碼會擲回執行階段錯誤,因為在程式試圖上傳檔案之前,未先呼叫 browse() 方法:
var fileRef:FileReference = new FileReference();
try
{
fileRef.upload("http://www.yourdomain.com/fileupload.cfm");
}
catch (error:IllegalOperationError)
{
trace(error);
// Error #2037:呼叫函數的順序錯誤,或是
// 先前的呼叫失敗。
}
在這種情況下,會同步擲回執行階段錯誤,因為 Flash Player 判斷在嘗試上傳檔案前,未先呼叫 browse() 方法。
如需有關同步錯誤處理的詳細資訊,請參閱處理應用程式中的同步錯誤。
請回想之前的檔案上傳同步錯誤範例。如果您在檔案上傳前順利呼叫 browse() 方法,Flash Player 便會傳送數個事件。例如,在上傳開始時會傳送 open 事件。檔案上傳作業順利完成時會傳送 complete 事件。由於事件處理是非同步的 (也就是說,不在特定、已知、預先指定的時間發生),因此您必須使用 addEventListener() 方法偵聽這些特定事件,如下列程式碼所示:
var fileRef:FileReference = new FileReference();
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.OPEN, openHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.browse();
function selectHandler(event:Event):void
{
trace("...select...");
var request:URLRequest = new URLRequest("http://www.yourdomain.com/fileupload.cfm");
request.method = URLRequestMethod.POST;
event.target.upload(request.url);
}
function openHandler(event:Event):void
{
trace("...open...");
}
function completeHandler(event:Event):void
{
trace("...complete...");
}
如需有關非同步錯誤處理的詳細資訊,請參閱對錯誤事件和狀態做出回應。
catch 陳述式) 可以回應的錯誤。當應用程式擲回錯誤,而且在目前或更高層級無法找到能夠處理該錯誤的適當 catch 陳述式或事件處理常式,這種錯誤就視為未捕捉的例外。 在執行階段,Flash Player 的設計會忽略未捕捉的錯誤,只要錯誤不會停止目前的 SWF 檔,就會嘗試繼續播放,因為使用者未必能自行解決錯誤。忽略未捕捉錯誤的程序稱為「無訊息的失敗」,這項程序會使應用程式的除錯工作更為複雜。Flash Player 除錯版本發現未捕捉的錯誤時,會終止目前的 Script,並在 trace 陳述式輸出中顯示未捕捉的錯誤,或是將錯誤訊息寫入記錄檔。如果例外物件是 Error 類別或其一子類別的實體,則會叫用 getStackTrace() 方法,而 trace 陳述式輸出或記錄檔中也會顯示堆疊追蹤資訊。如需有關使用 Flash Player 除錯版本的詳細資訊,請參閱使用 Flash Player 除錯版本。
Flash CS3
目前頁面: http://livedocs.adobe.com/flash/9.0_tw/main/00000097.html