天天看點

try catch代碼提示

try catch代碼提示

try..catch 主要是用來抛出異常的。防止程式中斷

一般try..catch用在一些容易出錯的地方,例如二進制的轉換,或者網絡異步方面。這次地方出錯率比較高一些

假如資料是恒定的,當然這樣就可以,但是當資料是從外部載入的或者從外部定義的,就不能保證是正确的。一旦出現問題,程式就會中斷

 var tArr:Array;   

     var aStr:String;

    try

    {

      aStr = tArr.toString();

    }

    catch (e:Error)

        trace(e); // output: ArgumentError: Error #2024: An object may not be added as a child of itself.

       btn1.label = "xxx";//有效

       Alert.show(e.toString());

編譯器警告

編譯器警告消息識别有效且成功編譯的代碼,但此代碼可能不是作者想要的代碼。若要檢測這些可能存在的問題,請在警告模式下編譯 ActionScript 項目。

其中一些警告(例如,“缺少類型聲明。”)屬于編碼風格的選擇問題,您既可以遵循也可以忽略。其它警告(例如,“指派不能為 null。”)指出語句雖然有效,但無法實作使用者所期望的行為。第三類警告涵蓋将 ActionScript 2.0 代碼移植到 ActionScript 3.0 時可能遇到的問題。

<a></a>

代碼

消息

說明

_“_”沒有類型聲明。

不聲明資料類型是一種個人編碼風格偏好。函數的傳回類型、參數或變量沒有類型聲明。但如果使用類型聲明,編譯器就可以編寫出更為有效的代碼并且在編譯時檢測到更多的錯誤。如果要在無法使用類型聲明時得到提示,可以啟用此警告。

類型為 _ 的變量不能為 undefined。比較之前,undefined 值将是強制為 _ 的類型。

隻有類型為 * 的變量才能為 undefined。未初始化的變量的預設值是 <code>null</code>(而不是 <code>undefined</code>),但有幾種例外情況。例外包括:Boolean 變量,其預設值為 <code>false</code>。Number 變量的預設值為 <code>NaN</code>;int 或 uint 變量的預設值為 <code>0</code>。

遷移問題:新 _ 的結果将是 _ 的傳回值,而不是該函數的新執行個體。

這是一個代碼遷移警告。在 ActionScript 3.0 和 ActionScript 2.0 中,檢測到的代碼具有不同的行為,如下面的示例所示:

使用了沒有參數的 Boolean()。

這是一個代碼遷移警告。<code>Boolean()</code> 函數在 ActionScript 3.0 中傳回 <code>false</code>,但在 ActionScript 2.0 中傳回 <code>undefined</code>。

遷移問題:使用空字元串參數調用 Number('') 函數時,它将在 ActionScript 3.0 中傳回 0,而在 ActionScript 2.0 中傳回 NaN。

這是一個代碼遷移警告。使用 String 參數調用的 <code>Number()</code> 方法會跳過該字元串中的所有空白,并在檢測不到數字時傳回預設值 0。在 ActionScript 2.0 中,該字元串中的任何空白都會導緻結果為 NaN。

遷移問題:Null 元素和 undefined 元素的 Array.toString() 處理已更改。

這是一個代碼遷移警告。在 ActionScript 2.0 中,<code>null</code> 數組元素轉換為 <code>null</code>,而 <code>undefined</code> 元素轉換為 <code>undefined</code>。在 ActionScript 3.0 中,<code>null</code> 和 <code>undefined</code> 元素都轉換為空字元串 ''。如果您的代碼分析了 Array 中的 <code>toString()</code> 輸出,您可能需要針對這兩種情況的差別對代碼進行調整。

遷移問題:不再支援屬性 _。_。

這是一個代碼遷移警告。您正在嘗試使用的屬性未存在于 ActionScript 3.0 中。

遷移問題:不再支援方法 _。_。

這是一個代碼遷移警告。ActionScript 3.0 中不存在您正在嘗試使用的方法。

不再支援 __resolve。

遷移問題:不再支援 __resolve。為了獲得類似功能,請使用新的 Proxy 類。

這是一個代碼遷移警告。有關替換 <code>__resolve</code> 的詳細資訊,請參閱本語言參考中的 Proxy。

遷移問題:不再支援 _level。有關詳細資訊,請參閱 flash.display 包。

遷移問題:_ 不是動态類。不能以動态方式向執行個體中添加成員。

這是一個代碼遷移警告。在 ActionScript 2.0 中,許多類(如 Number)是動态的,這意味着可以在運作時向這些類的執行個體中添加新屬性。如果代碼嘗試向非動态類的執行個體中添加屬性,則會産生此警告。

遷移問題:由于 this 關鍵字範圍的變化,方法 _ 在 ActionScript 3.0 中将有不同的行為。有關其它資訊,請參閱有關警告 1083 的條目。

這是一個代碼遷移警告。将對象的方法作為值(通常是回調函數)使用時,将會生成此警告。在 ActionScript 2.0 中,在調用函數的上下文中執行函數;在 ActionScript 3.0 中,總是在定義函數的上下文中執行函數。是以,變量和方法的名稱将被解析為回調函數所屬的類,而不是與調用該函數的上下文有關的類,如下面的示例所示:

_ 的範圍将是預設命名空間 _ 的内部。它在此包之外不可見。

不聲明命名空間是一種個人編碼風格偏好。如果要在忘記聲明定義的命名空間或通路說明符時得到提示,可以啟用此警告。如果沒有命名空間或通路說明符,該定義對于此檔案之外的代碼是不可見的。要使該定義對于此檔案之外的代碼是可見的,請使用通路說明符 <code>public</code> 或命名空間聲明對該定義進行聲明。要使該定義的作用範圍僅限于此檔案并避免生成此警告,請将該定義聲明為 <code>private</code>。

遷移問題:ActionScript 3.0 以随機順序在一條“for x in target”語句之内疊代對象的屬性。

這是一個代碼遷移警告。在 ActionScript 2.0 中,對象屬性的處理順序始終不變。在 ActionScript 3.0 中,該順序是随機的,可因計算機而異。如果出現意外的排序行為,請檢查此循環,以确定此行為更改是否會影響代碼。

錯誤代碼:_。

這是由于源檔案遭到破壞或編譯器代碼中出現錯誤造成的。請與 Adobe, Inc. 聯系,以便将錯誤登記備案。

遷移問題:_

這是一個代碼遷移警告。在 ActionScript 2.0 中,如果聲明方法時使用的是特殊名稱(如 <code>onMouseDown</code>),那麼,在出現特定事件時,Flash 可能會調用該方法。在 ActionScript 3.0 中,必須通過方法來調用 <code>addEventListener()</code>,進而對這一函數進行注冊以接收該事件。有關詳細資訊,請參閱本語言參考中的 <code>addEventListener</code>。

在應為 uint(非負)值的地方使用負值。

将負值賦給 uint 資料類型的變量将産生極大的正值。 <code>var x:uint = -1; trace(x); // 4294967295</code>.

與 null 的比較不合邏輯。類型為 _ 的變量不能為 null。

Boolean、int、uint 和 Number 類型的執行個體不能為 <code>null</code>。與 Boolean 資料類型比較之前,比較運算符類型将 <code>null</code> 轉換成 <code>false</code>;與 Number、int 或 uint 資料類型比較之前,将其轉換成 0。

與 NaN 的比較不合邏輯。此語句始終計算為 false。

<code>NaN</code> 具有獨特的數學屬性,任何涉及該屬性的比較運算都計算為 <code>false</code>。改用全局 <code>isNaN()</code> 函數檢測 NaN 值,如下面的示例所示:

條件語句之内的指派語句。您指的是 == 而不是 = 嗎?

= 指派語句的結果是該 = 語句右邊的值。可以将指派語句用作條件測試,但不建議這樣做。通常,出現 = 是由于計劃執行 == 相等測試時的鍵入錯誤造成的,如下面的示例所示:

使用了 null 值,但是應為 _ 值。

不能将 <code>null</code> 作為值賦給 Boolean、Number、int 和 uint 變量。賦給 Boolean 資料類型時,<code>null</code> 值會隐式轉換為 <code>false</code>,而賦給 int、uint 或 Number 資料類型時會轉換為 <code>0</code>。

尚未指定類 _ 的構造函數。

不指定構造函數是一種個人編碼風格偏好。如果需要始終為類聲明構造函數,可以啟用此警告。此警告旨在幫助您發現類名稱更改但其構造函數名稱沒有更改的情況。不啟用此警告時此類情況不會被标記為問題,前一個構造函數看上去是一個标準函數。

未初始化該常量。

Array(x) 與新 Array(x) 具有相同的行為。若要将某個值轉換成 Array 類型,請将表達式 x 用作 Array 而非 Array(x)。

輸入此構造函數之前,将會執行 super() 語句。如果要顯式控制 super() 語句的執行時間,請在該構造函數中添加對該語句的調用。

在構造函數中添加對 <code>super()</code> 的調用是一種個人編碼風格偏好。如果需要始終明确 <code>super()</code> 的調用時間,可以啟用此警告。啟用此警告對于打算在某些本地初始化代碼之後調用 <code>super()</code> 但忘記對其進行添加的情況非常有用。

與使用 TextField.appendText() 方法相比,使用 += 将文本追加到 TextField 的效率低很多倍。

有關此重要文本優化操作的詳細資訊,請參閱本語言參考中有關 TextField 類的 <code>appendText()</code> 方法的内容。

使用了 Function 值,但是應為類型 _。此函數參考之後可能缺少括号 ()。

在 ActionScript 中,可以将函數本身用作值。此處所述的代碼使用的是 Function 類型的值,但需要的是 Function、Object 或 * 之外的類型。通常,這表示出現函數名稱之後遺漏括号 <code>()</code> 的鍵入錯誤。

不推薦使用 instanceof 運算符,請改用 is 運算符。

遷移錯誤:ActionScript 2.0 XML 類已重命名為 XMLDocument。

這是一個代碼遷移警告。在 ActionScript 3.0 和 ActionScript 2.0 中,XML 是不同的類。ActionScript 3.0 中的 XMLDocument 類與 ActionScript 2.0 中的 XML 類等效。ActionScript 3.0 XML 類通過更為簡便和更加強大的 API 提供了增強的功能。有關其它詳細資訊,請參閱《ActionScript 語言參考》中的 XML。

Date(x) 與新的 Date().toString() 具有相同的行為。若要将某個值轉換為 Date 類型,請使用“x as Date”代替 Date(x)。

如果以相同名稱将包導入為目前類,将在此作用域中隐藏該類的辨別符。

指定了多個名稱為“_”的參數。對該參數的引用将始終解析為最後一個參數。

使用了非 Boolean 值,但是應為 Boolean 值。

使用了 _,但是應為 Boolean 值。表達式将強制為 Boolean 類型。

_ 不是動态類 _ 的可識别屬性。

在嚴謹的編譯模式下,不會在動态類的執行個體中檢查未定義屬性。類型 Date、RegExp 和 Error 是動态的,以便向後與 ECMAScript 相容。此警告在這些類的執行個體中找到了對未定義屬性的使用。一個常見的問題是嘗試擷取或設定的 Date 值的 <code>year</code> 屬性不存在。正确的屬性名稱是 <code>fullYear</code>。

_ 不是動态類 _ 的可識别方法。

在嚴謹的編譯模式下,不會在動态類的執行個體中檢查未定義的方法。類型 Date、RegExp 和 Error 是動态的,以便向後與 ECMAScript 相容。此警告在這些類的執行個體中找到了對未定義方法的使用。

重複的變量定義。

編譯器檢測到變量的重複定義。這會導緻意外的結果。ActionScript 不支援變量的塊級别作用範圍。在函數體内定義的所有變量屬于同一範圍,即便這些變量在 <code>if</code> 語句、<code>while</code> 語句和 <code>for</code> 語句中定義,也是如此。例如,下面的代碼會重新聲明變量 x 兩次:

定義的名稱和已導入的包的名稱相同。如果不加限定地引用該名稱,則該名稱将被解析為包而不是定義。

如果某定義的名稱與範圍内的包相同,則對該名稱的任何非限定引用都将解析為該包,而不是解析為該定義。這會在嘗試引用該變量時導緻意外的錯誤。為此,必須限定對該定義的所有引用,以便将其解析為該定義,而不是解析為該包。

可能試圖删除固定屬性。

不能删除聲明屬性 _。若要釋放相關記憶體,請将其值設定為 null。

delete 會從對象中動态删除定義的屬性。不能删除類的聲明屬性,該操作将失敗且無任何提示。若要釋放此變量的相關記憶體,請将其值設定為 null。

繼續閱讀