下列是編譯器在遇到無效程式碼時產生的編譯錯誤清單。這些錯誤的子集只有在嚴謹模式編譯程式碼時才會偵測到。嚴謹模式新增了標準語言中所沒有的三個限制:
- 運算式具有靜態類型,並且類型錯誤為驗證錯誤。
- 新增的驗證規則可捕捉常見的程式錯誤。
- 提前回報驗證錯誤。這些驗證錯誤只會在嚴謹模式中發生:
- 函數呼叫簽名比對,可檢查提供的參數數目及其類型。
- 重製定義衝突。
- 未繫結參照,當存取未在編譯階段定義的方法或屬性時發生。
- 動態地在密封物件上新增屬性。
- 寫入常數變數。
- 刪除固定屬性。
- 比較使用不相容類型的運算式。
- 找不到套件。
程式碼 | 訊息 | 說明 | |
---|---|---|---|
1000 | %s 的模稜兩可參照。 |
可能參照了一個以上的項目。例如,下列範例使用名稱空間 rss 和 xml ,這兩個名稱空間分別為 hello() 函數定義不同的值。 trace(hello()) 陳述式會傳回此錯誤,因為它無法判斷要使用哪個名稱空間。
讓參照成為特殊項目即可更正模稜兩可的參照。下列範例使用格式 namespace::function 來指定要使用的名稱空間:
| |
1003 | 存取指定字不允許有名稱空間特質。 | 您不能在定義中同時使用存取規範 (如 private 或 public) 和名稱空間特質。 | |
1004 | 找不到名稱空間,或者名稱空間不是編譯階段常數。 | 名稱空間為未知,或是可能在執行階段具有不同值的運算式。請確認名稱空間的拼字正確,並且已正確匯入它的定義。 | |
1006 | super 運算式只能用在類別實體方法中。 | ||
1007 | super 陳述式只能用在類別實體建構函式中。 |
您不能在靜態成員中使用 super 陳述式。您只能在類別實體中使用 super 陳述式。
| |
1008 | 特質無效。 | ||
1010 | override 特質只能用在類別屬性定義中。 |
您不能在函數區塊內使用 override 關鍵字。
| |
1011 | virtual 特質只能用在類別屬性定義中。 |
當您宣告不屬於類別的屬性時 (例如,在函數區塊內宣告變數),便無法使用 virtual 特質。
| |
1012 | static 特質只能用在類別中的定義。 | ||
1013 | private 特質只能用在類別屬性定義中。 | ||
1014 | 不再支援 intrinsic 特質。 |
ActionScript 3.0 不支援 intrinsic 關鍵字。
| |
1016 | 基底類別為 final。 |
無法擴充父類別,因為它被標記為 final 。
| |
1017 | 找不到基底類別 %s 的定義。 | ||
1018 | 重複的類別定義:%s. | ||
1020 | 標記為 override 的方法必須覆寫另一個方法。 | ||
1021 | 重製函數定義。 | 您不能在相同範圍內宣告一個以上具有相同識別名稱的函數。 | |
1022 | 無法覆寫 final 存取子。 | ||
1023 | 不相容的覆寫。 | 標記為 override 的函數必須完全符合所要覆寫之函數的參數和傳回類型宣告。它必須具有相同數量的參數、相同的類型,並宣告相同的傳回類型。如果有任何選擇性的參數,也必須相符。兩種函數也都必須使用相同的存取規範 (public、private 等) 或名稱空間特質。 | |
1024 | 覆寫沒有標記為 override 的函數。 |
如果類別中的方法覆寫基底類別中的方法,您必須使用 override 特質明確地宣告該方法,如下列範例所示:
public override function foo():void{}; | |
1025 | 無法重新定義 final 方法. |
無法擴充方法,因為在基底類別中它被標記為 final 。
| |
1026 | 建構函式必須是實體方法. | ||
1027 | 函數不可以同時為 static 和 override。 | ||
1028 | 函數不可以同時為 static 和 virtual。 | ||
1029 | 函數不可以同時為 final 和 virtual。 | ||
1030 | 必須指定變數引數陣列的名稱. |
...(rest) 參數定義指定所有在 ...(rest) 之後提供的值,都會被收集至任何陣列中。您必須像在運算式 function foo(x,...(rest)) 中一般,為陣列指定名稱。
| |
1033 | 不支援虛擬變數。 | ||
1034 | 變數不可以是原生。 | ||
1035 | 變數不可以同時為 final 和 virtual。 | ||
1037 | 套件不可以是巢狀。 | ||
1038 | 找不到 break 陳述式的目標。 | ||
1039 | 找不到 continue 陳述式的目標。 | ||
1040 | 重複的標籤定義. | ||
1041 | 特質為不可呼叫. | ||
1042 | 關鍵字 this 不可以用在靜態方法中。它只能用在實體方法、函數結束項和全域程式碼中。 |
您不可以在靜態成員中使用 this 關鍵字,因為 this 可能沒有內容。
| |
1043 | 未定義的命名空間. | ||
1044 | 介面方法 %s (命名空間 %s 內) 未由類別 %s 實作。 | ||
1045 | 找不到介面 %s。 | ||
1046 | 找不到類型,或者類型不是編譯階段常數:%s。 |
做為類型宣告的類別為未知,或是可能在執行階段具有不同值的運算式。請確認您匯入正確的類別,並且套件位置從沒變更過。此外,請確認包含程式碼 (不是匯入的類別) 的套件已正確地定義 (例如,請確認使用適當的 ActionScript 3.0 套件語法,而不是 ActionScript 2.0 語法)。
如果要參照的類別不是在作用中或定義為 public 的名稱空間中定義的,也會發生錯誤:
如果您使用的是 Flex Builder 2,且類別是在元件庫中,請確認設定了專案的類別路徑。 | |
1047 | 參數初始設定式為未知,或者不是編譯階段常數。 | 當作參數預設值的值未定義,或者可能在執行階段具有不同的值。請確認初始設定式的拼字正確,而且初始設定式的值不是會在執行階段中造成不同可能值的運算式。 | |
1048 | 方法不可以當作建構函式. |
無法建立類別方法實體。只有全域函數可以用在 new 運算式中。
class D { function xx() { return 22; } } var d:D = new D(); var x = new d.xx(); // error, method cannot be used as constructor function yy() { this.a = 22; } var z = new yy(); // no error, global functions can be used as constructors. | |
1049 | 指定為常數之變數的不合法指定。 | ||
1050 | 無法指定為非參照值。 | ||
1051 | 傳回值必須為未定義. |
您嘗試在已宣告傳回類型 void 的方法中使用 return 陳述式。
| |
1052 | 常數初始設定式為未知,或者不是編譯階段常數。 | 用來初始化常數的值為未定義,或者可能在執行階段具有不同的值。請確認初始設定式的拼字正確,而且初始設定式的值不是會在執行階段中造成不同可能值的運算式。 | |
1053 | 存取子類型必須相符. | ||
1054 | setter 定義的傳回類型必須為未指定,或是 void。 |
您無法為 setter 函數指定傳回值。例如,下列範例為無效:
public function set gamma(g:Number):Number; 下列範例則「有效」: public function set gamma(g:Number):void; | |
1058 | 屬性是唯寫的. | ||
1059 | 屬性是唯讀的. |
這個屬性是透過 getter 函數來定義,讓您可以擷取該屬性的值。然而,這個屬性沒有定義的 setter 函數,因此為唯讀。
在下列範例中,第三行會產生錯誤,因為 class D { function get xx() { return 22; } } var d:D = new D(); d.xx = 44; // error, property is read-only | |
1061 | 呼叫可能未定義的方法 %s (透過含有靜態類型 %s 的參照)。 | 您正呼叫未定義的方法。 | |
1063 | 無法開啟檔案:%s. | ||
1064 | 無效的中繼資料。 | 此中繼資料無法辨識。 | |
1065 | 中繼資料特質不可以具有一個以上的元素。 | ||
1067 | 將類型 %s 的值隱含強制至不相關的類型 %s。 | 您嘗試將物件轉換 (Cast) 成它無法轉換 (Convert) 的類型。如果您要轉換 (Cast) 的類別不在所要轉換 (Cast) 之物件的繼承鏈中,就會發生這個情形。只有當編譯器以嚴謹模式執行時,才會發生這個錯誤。 | |
1068 | 無法開啟包含的檔案:%s。 | ||
1069 | 語法錯誤:應為定義或指令。 | 請檢查此行的語法。 | |
1071 | 語法錯誤:%s 特質後面應為定義關鍵字 (例如函數),而非 %s。 |
如果作者忘記在宣告中使用 "var" 或 "function" 關鍵字,就會發生這個錯誤。
當編譯器遇到未預期的字元時,可能也會發生這個錯誤。例如,下列 trace() 函數的用法無效,因為少了括號 (正確的語法是 trace("hello") ):
trace "hello" | |
1072 | 語法錯誤:名稱空間前面應為 xml。 |
正確的陳述式語法是 default xml namespace = ns 。可能遺失了關鍵字 xml (注意小寫),或者使用了不正確的關鍵字。如需詳細資訊,請參閱 default xml namespace 指令。
| |
1073 | 語法錯誤:應為 catch 或 finally 子句。 | ||
1075 | 語法錯誤:如果沒有 'in' 運算子,就不允許使用關鍵字 'each'。 | ||
1076 | 語法錯誤:識別名稱前面應為左括號。 | ||
1077 | 應為 CaseLabel. |
此時,編譯器預期會在 switch 區塊中遇到 case 陳述式。下列 switch 區塊不正確地在第一個 case 陳述式前面加入對 print 的呼叫:
switch(x) { trace(2); case 0: trace(0); break } | |
1078 | 標籤必須是簡單的識別名稱. | ||
1079 | super 運算式必須具有一個運算元。 | ||
1080 | 應為遞增或遞減運算子. | ||
1082 | 括號內應為單一運算式。 | ||
1083 | 語法錯誤:這不是預期的 %s。 |
程式碼行遺失一些資訊。在下列範例中,必須在最後一個加號後面加上一些運算式 (例如其它數字):
var sum:int = 1 + 2 + ; | |
1084 | 語法錯誤:%s 前面應為 %s。 |
這個時候不應有運算式。如果錯誤顯示「程式結尾前面應為右大括弧」,表示程式碼區塊遺失右大括弧 (})。
如果錯誤顯示「_ 前面應為左括號」,表示條件運算式中可能省略了括號,如下列故意犯錯的範例所示:
| |
1086 | 語法錯誤:%s 前面應為分號。 | ||
1087 | 語法錯誤:在程式結尾後面找到多餘的字元。 | ||
1093 | 語法錯誤。 | ||
1094 | 語法錯誤:必須先將字串常值結束,再放置斷行符號。 | ||
1095 | 語法錯誤:必須先將字串常值結束,再放置斷行符號。 | ||
1097 | 語法錯誤:在到達字串常值的結束引號之前,輸入便已結束。 | ||
1099 | 語法錯誤. | ||
1100 | 語法錯誤:XML 沒有相符的開始和結束標籤。 | ||
1102 | 無法刪除 super 後代。 | ||
1103 | 重複的命名空間定義. | 您不止一次定義了名稱空間。請刪除或修改重製定義。 | |
1104 | %s | ||
1105 | 指定的目標必須是參考值. | 您可以指定值給變數,但無法指定值給其它值。 | |
1106 | 遞增運算元必須是參考. | 運算元必須是變數、陣列中的元素或物件的屬性。 | |
1107 | 遞增運算元無效。 | 運算元必須是變數、陣列中的元素或物件的屬性。 | |
1108 | 遞減運算元無效。 | 運算元必須是變數、陣列中的元素或物件的屬性。 | |
1109 | 應為運算式。 |
部分程式碼遺失運算式。例如,下列範例會產生這個錯誤 ( if 陳述式中遺失了條件:
| |
1110 | 遺失 XML 標籤名稱. | ||
1111 | 檔案 %s 不是有效的 ABC 檔案。 | ||
1112 | 可能會造成無窮遞迴,因為這個檔案包含:%s. |
隨附於所要編譯之來源的檔案,含有其它可能會造成無窮迴圈的 include 陳述式。例如,以下列檔案為例。a.as 和 b.as 檔案都會產生這個錯誤,因為這兩個檔案都嘗試將對方包含在內。
a.as 檔含有下列嘗試將 b.as 檔包含在內的陳述式: import foo.bar.baz; include "b.as" trace(2); b.as 檔含有下列嘗試將 a.as 檔包含在內的陳述式: include "a.as" | |
1113 | 在 %s 中偵測到循環類型參照。 |
類別正嘗試擴充父類別。例如,如果類別 B 是從類別 A 繼承而來,類別 A 便無法擴充類別 B:
| |
1114 | public 特質只能用在套件中。 | ||
1115 | internal 特質只能用在套件中。 | ||
1116 | 使用者定義的名稱空間特質只能用在類別定義的最上層。 | ||
1118 | 將靜態類型 %s 的值隱含強制至可能不相關的類型 %s。 | 您正在使用的值不屬於預期的類型,並且沒有隱含強制可將它轉換為預期的類型。
或許您正在使用的父類型,但預期是子類型。例如:
最後一個陳述式會產生錯誤,因為它嘗試將類型 A 的物件指定給類型 B 的變數。 同樣地,下列陳述式定義使用類型 B 之參數的
同時,下列陳述式會產生錯誤,因為
| |
1119 | 存取可能未定義的屬性 %s (透過含有靜態類型 %s 的參照)。 |
您嘗試存取的屬性對特定物件而言並不存在。例如,下列程式碼會產生錯誤,因為 int 物件沒有名為 assortment 的屬性:
只有當編譯器以嚴謹模式執行時,才會發生這個錯誤。
| |
1120 | 存取未定義的屬性 %s。 |
您嘗試存取未定義的變數。例如,如果變數 huh 尚未定義,呼叫該變數便會產生此錯誤:
只有當編譯器以嚴謹模式執行時,才會發生這個錯誤。
| |
1121 | getter 定義不能有參數. | ||
1122 | setter 定義必須剛好有一個參數. | ||
1123 | setter 定義不能含有選擇性參數. | ||
1124 | getter 定義的傳回值不可以是 void。 | getter 函數會模擬變數。由於變數的類型不可以是 void,因此,您無法將 getter 函數宣告為傳回類型 void。 | |
1125 | 在介面中定義的方法不能有主體。 | ||
1126 | 函數沒有主體. | ||
1127 | 多次指定了特質 %s。 |
您在同一個陳述式中多次指定了特質。例如,陳述式 public static public var x; 會產生這個錯誤,因為它已兩次將變數 x 指定為 public。請刪除重製宣告。
| |
1129 | 重複的介面定義:%s. | 請變更或刪除重製定義。 | |
1130 | 建構函式不能指定傳回類型。 | ||
1131 | 類別不可以是巢狀。 | ||
1132 | 特質 final 只能用在類別中所定義的方法上。 | ||
1133 | native 特質只能與函數定義搭配使用。 | ||
1134 | dynamic 特質只能與類別定義搭配使用。 | ||
1135 | 語法錯誤:%s 不是有效的類型。 | ||
1136 | 引數數目不正確。應為 %s。 |
函數需要不同於您所提供的引數數目。例如,下列範例定義具有兩個引數的函數 goo :
class A { static function goo(x:int,y:int) { return(x+y); } } 下列陳述式會產生錯誤,因為它提供了三個引數: A.goo(1,2,3); | |
1137 | 引數數目不正確。不能超過 %s。 | ||
1138 | 必要的參數不可以放在選擇性參數後面。 | ||
1139 | 介面中不允許變數宣告. | ||
1140 | 在 ...rest 參數定義關鍵字後指定的參數只能為資料類型 Array。 | ||
1141 | 類別只能擴充其它類別,不能擴充介面. | ||
1142 | 介面只能擴充其它介面,但 %s 為類別。 | 您嘗試將介面擴充為類別。介面只能擴充另一個介面。 | |
1143 | override 特質只能用在類別中所定義的方法上。 | ||
1144 | 介面方法 %s (名稱空間 %s 內) 是使用類別 %s 中不相容的使用方式實作。 | 方法的使用方式必須完全相符。 | |
1145 | 原生方法不能有主體。 |
您不能使用 native ,因為這是保留的關鍵字。
| |
1146 | 建構函式不可以是 getter 或 setter 方法。 | ||
1147 | 未指定 AS 來源檔案。 | ||
1149 | 傳回陳述式不能用在靜態初始化程式碼中。 | ||
1150 | protected 特質只能用在類別屬性定義中。 | ||
1151 | 與定義 %s (名稱空間 %s 內) 一同存在的衝突。 |
您不能在相同範圍內以相同的識別名稱宣告一個以上的變數,除非這些所有的變數都被宣告為相同類型。在 ActionScript 3.0 中,不同的程式碼區塊 (例如在相同 function 定義的兩個 for 迴圈中使用的區塊) 會被視為在同一個範圍內。
下列程式碼範例會正確地將變數
下列程式碼範例會產生錯誤,因為變數宣告中轉換的類型與
| |
1152 | 與繼承而來的定義 %s (名稱空間 %s 內) 一同存在的衝突。 | ||
1153 | 建構函式只能宣告為 public。 | ||
1154 | 在定義中,只能指定 public、private、protected 或 internal 這四種中的一種。 | ||
1155 | 存取子不能以巢狀方式放在其它函數內部。 | ||
1156 | 介面不能使用新的運算子來實體化. | ||
1157 | 介面成員不能宣告為 public、private、protected 或 internal。 | ||
1158 | 語法錯誤:函數主體前面少了左大括弧 ({)。 | ||
1159 | 傳回陳述式不能用在套件初始化程式碼中。 | ||
1160 | native 特質不能用在介面定義中。 |
您不能使用 native ,因為這是保留的關鍵字。
| |
1162 | 每個定義只能使用一個名稱空間特質。 | ||
1163 | 方法 %s 與從介面 %s 繼承而來的定義產生衝突。 | ||
1165 | Interface 特質 %s 無效。 | ||
1166 | 介面中不允許命名空間宣告. | ||
1167 | 類別 %s 多次實作介面 %s。 |
類別多次實作相同的介面。例如,下列會產生這個錯誤,因為類別 C 實作介面 A 兩次:
正確的實作陳述式應為 | |
1168 | 函數 %s 的不合法指定。 |
您嘗試重新定義函數。例如,下列範例定義函數 topLevel() 列印 "top" 這個字。第二個陳述式會產生錯誤,因為它將不同的傳回值指定給函數:
| |
1169 | 介面方法中不允許 Namespace 特質. | ||
1170 | 函數未傳回值。 |
函數中所有可能的控制流程,都必須在傳回類型不是 void 時傳回值。下列函數 f(x) 不會傳回錯誤,因為 if..else 陳述式一定會傳回值:
然而,以下的函數
只有當函數將傳回類型宣告為 void 以外的類型時,才會啟用這個檢查。 | |
1171 | 命名空間初始設定式必須是常值字串或其它命名空間. | ||
1172 | 找不到定義 %s。 | ||
1173 | 標籤定義無效。 | ||
1176 | 靜態類型 %s 的值與可能不相關類型 %s 的值之間的比較。 | 此錯誤是在嚴謹模式中啟用。 | |
1177 | 傳回陳述式不能用在全域初始化程式碼中。 | ||
1178 | 嘗試存取無法存取的屬性 %s (透過含有靜態類型 %s 的參照)。 | ||
1179 | 暫時無法使用 :Object。請改用 :*。 | ||
1180 | 呼叫可能未定義的方法 %s。 | 只有當編譯器以嚴謹模式執行時,才會發生這個錯誤。 | |
1181 | 基底類別 %s 的向前參照。 | ||
1182 | 套件不可以當作值:%s。 | ||
1184 | 類型 %s 的不相容預設值,應為 %s。 | ||
1185 | switch 具有一個以上的預設值,但只允許一個預設值。 | ||
1188 | 類別 %s 的不合法指定。 | ||
1189 | 嘗試刪除固定屬性 %s。只能刪除動態定義的屬性。 | 刪除即會從物件中移除動態定義的屬性。類別的宣告屬性無法刪除。只有當編譯器以嚴謹模式執行時,才會發生這個錯誤。 | |
1190 | 找不到基底類別,或者基底類別不是編譯階段常數。 | ||
1191 | 找不到介面,或者介面不是編譯階段常數。 | ||
1192 | 名稱空間定義不允許 static 特質。 | ||
1193 | 介面定義不能以巢狀方式放在類別或其它介面定義中。 | ||
1194 | prototype 特質無效。 | ||
1195 | 嘗試存取無法存取的方法 %s (透過含有靜態類型 %s 的參照)。 | 您從其它類別呼叫私有方法,或是在未使用的名稱空間中呼叫定義的方法。如果您要在未使用的名稱空間中呼叫定義的方法,請為所需的名稱空間新增 use 陳述式。
| |
1196 | 語法錯誤:擲出後應有運算式。 | ||
1197 | 類別 %s 無法擴充 %s,因為兩者都與元件庫元件或主要時間軸相關聯。 | ||
1198 | 套件定義中不允許特質。 | ||
1199 | 內部錯誤:%s。 | ||
1200 | 語法錯誤:for-in 初始設定式無效,應只有一個運算式。 | ||
1201 | super 陳述式不能出現在 this、super、return 或 throw 陳述式之後。 | ||
1202 | 存取未定義的屬性 %s (位於套件 %s 中)。 |
您嘗試存取套件中未定義的變數。例如,如果變數 p.huh 尚未定義,呼叫該變數便會產生此錯誤:
只有當編譯器以嚴謹模式執行時,才會發生這個錯誤。
| |
1203 | 基底類別 %s 中沒有預設的建構函式 | 您必須明確的呼叫具有 super() 陳述式的基底類型之建構函數 (如果此函數具有一個或以上所需的引數)。 | |
1204 | /* 找不到符合條件的項目*/。 | 找到 '/*' 字元,此字元為註解的起始點,找不到表示註解結尾的相對應之 '*/' 字元。 | |
1205 | 語法錯誤:應為左大括弧 ({) 或字串常值 ("")。 | ||
1206 | super 陳述式只能當作建構函式初始設定式清單中的最後一個項目。 |
您不能在建構函式中使用 super 陳述式。您只能將 super 陳述式當作建構函式初始設定式清單中的最後一個項目。
| |
1207 | 關鍵字 this 不可以用在屬性初始設定式中。 |
您不能在屬性初始設定式中使用 this 關鍵字。
| |
1208 | 組態設定值的初始設定式必須是編譯階段常數。 | 組態設定值的初始設定式必須是編譯階段已知的值。初始設定式可能是常數字串、數字、Boolean 值,或是另一個先前定義的組態設定值的參照。 | |
1209 | 組態變數只能宣告為 const。 | 定義組態變數時,必須將它宣告為 const。 | |
1210 | 組態設定值必須在程式或套件的最上層宣告。 | 組態設定值必須在程式或套件的最上層宣告。 | |
1211 | 命名空間 %s 與組態設定的命名空間衝突。 | 命名空間不能與組態設定的命名空間同名。 | |
1212 | 精確度必須是介於 1 和 34 之間的整數。 | ||
1214 | 不相容的版本:定義 %s (版本 %s 中新增的) 無法由版本 %s 的程式碼參照。 | ||
1215 | 初始化無效:轉換成類型 %s 將遺失資料。 |
Tue Jun 12 2018, 04:04 PM Z