以下是编译器遇到无效代码时生成的编译错误的列表。只有在严格模式下编译代码时,才能检测到这些错误的子集。严格模式添加了标准语言中没有的三种约束:
- 表达式有静态类型,且类型错误为验证错误。
- 附加验证规则捕获常见的编程错误。
- 提前报告验证错误。以下验证错误仅在严格模式下发生:
- 函数调用签名匹配,将检查所提供的参数数目及其类型。
- 重复定义冲突。
- 访问编译时未定义的方法或属性时出现未绑定的引用。
- 在密封对象上动态添加属性。
- 写入常量变量。
- 删除固定属性。
- 使用不兼容类型的比较表达式。
- 找不到包。
| 代码 | 消息 | 说明 | |
|---|---|---|---|
| 1000 | 对 %s 的引用不明确。 |
引用可能指向多项。例如,以下示例使用命名空间 rss 和 xml,每个命名空间都为 hello() 函数定义一个不同的值。trace(hello()) 语句返回此错误,因为它无法确定使用哪个命名空间。
通过使用具体的引用来纠正不明确的引用。以下示例使用 namespace::function 形式指定要使用的命名空间:
| |
| 1003 | 不允许将访问说明符与 namespace 属性一同使用。 | 不能在定义中既使用访问说明符(如 private 或 public)又使用 namespace 属性。 | |
| 1004 | Namespace 找不到或不是编译时常量。 | 该命名空间未知,或是运行时可能具有不同值的表达式。检查命名空间的拼写及其定义的导入是否正确。 | |
| 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 等)或 namespace 属性。 | |
| 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 | 不支持 virtual 变量。 | ||
| 1034 | 变量不能是 native。 | ||
| 1035 | 变量不能同时标记为 final 和 virtual。 | ||
| 1037 | 包不能嵌套。 | ||
| 1038 | 找不到 break 语句的目标。 | ||
| 1039 | 找不到 continue 语句的目标。 | ||
| 1040 | 标签的定义重复。 | ||
| 1041 | 属性是不可调用的。 | ||
| 1042 | 不能在 static 方法中使用 this 关键字。该关键字只能在实例方法、函数闭包和全局代码中使用。 |
不能在静态成员的内部使用 this 关键字,因为 this 可能没有上下文。
| |
| 1043 | 命名空间未定义。 | ||
| 1044 | 接口方法 %s(在命名空间 %s 中)未由类 %s 实现。 | ||
| 1045 | 找不到接口 %s。 | ||
| 1046 | 找不到类型或类型不是编译时常量: %s。 |
用作类型声明的类未知,或是运行时可能具有不同值的表达式。检查导入的类是否正确以及该类的包位置是否尚未更改。此外,检查包含代码(不是导入的类)的包是否进行了正确定义(例如,确保使用正确的 ActionScript 3.0 包语法,而不是 ActionScript 2.0 包语法)。
如果被引用的类没有在使用的命名空间中定义或未定义为 public,也会出现该错误:
如果使用的是 Flex Builder 2,并且该类位于库中,请确保为项目设置类路径。 | |
| 1047 | 参数初始值设定项未知或不是编译时常量。 | 用作该参数默认值的值未定义或在运行时可能具有不同的值。检查初始值设定项的拼写是否正确,以及初始值设定项的值是不是一个会在运行时导致产生不同值的表达式。 | |
| 1048 | Method 不能用作构造函数. |
不能创建类方法的实例。只有全局函数才能在 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 | 返回值必须是 undefined。 |
您正尝试在声明的返回类型为 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 函数,因此,该属性是只读的。
在下面的示例中,第 3 行会生成错误,因为不存在为 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。 | 正在试图将对象转换为无法转换成的类型。如果所要转换的类不在正在转换的对象继承链中,可能会出现这种情况。只有当编译器在严谨模式下运行时才会出现此错误。 | |
| 1068 | 无法打开包括的文件: %s。 | ||
| 1069 | 语法错误: 需要定义或指令。 | 检查该行的语法。 | |
| 1071 | 语法错误: 定义关键字(如 function)应在属性 %s 之后,而非 %s 之后。 |
如果作者忘记在声明中使用“var”和“function”关键字,将会出现此错误。
编译器遇到意外字符时,也会出现此错误。例如,由于缺少括号,trace() 函数的以下用法无效(正确的语法是 trace("hello")):
trace "hello" | |
| 1072 | 语法错误: 在 namespace 之前应该有 xml。 |
正确的语句语法是 default xml namespace = ns。缺少关键字 xml(注意小写),或者使用了错误的关键字。有关更多信息,请参阅 default xml namespace 指令。
| |
| 1073 | 语法错误: 需要 catch 或 finally 子句。 | ||
| 1075 | 语法错误: 'each'关键字必须带有'in'运算符。 | ||
| 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 | 用户定义的 namespace 属性只能在类定义的顶级使用。 | ||
| 1118 | 将静态类型为 %s 的值隐式强制转换为可能不相关的类型 %s。 | 所要使用的值不是预期的类型,不存在将其转换为预期类型的隐式强制。
可能使用的是超级类型,但需要的是子类型。例如:
最后一个语句会生成错误,因为该语句尝试将类型 A 的对象赋给类型 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 中,不同的代码块(如用于同一函数定义中的两个 for 循环中的代码块)将被视为在同一作用域内。
下面的代码示例正确地将变量
下面的代码示例会生成错误,因为变量声明和
| |
| 1152 | 与继承的定义 %s(在命名空间 %s 中)存在冲突。 | ||
| 1153 | 构造函数只能声明为 public。 | ||
| 1154 | 在定义中只能指定 public、private、protected 或 internal 中的一个。 | ||
| 1155 | 存取器不能嵌套在其他函数中。 | ||
| 1156 | 不能使用新运算符实例化接口。 | ||
| 1157 | 接口成员不能声明为 public、private、protected 或 internal。 | ||
| 1158 | 语法错误: 函数体之前缺少左大括号 ({)。 | ||
| 1159 | 不能在包初始化代码中使用返回语句。 | ||
| 1160 | 本机属性不能用于接口定义。 |
不能使用 native,因为它是一个保留关键字。
| |
| 1162 | 每个定义只能使用一个 namespace 属性。 | ||
| 1163 | 方法 %s 与从接口 %s 继承的定义存在冲突。 | ||
| 1165 | 接口属性 %s 无效。 | ||
| 1166 | 不允许在接口中声明命名空间。 | ||
| 1167 | 类 %s 多次实现接口 %s。 |
该类多次实现同一个接口。例如,下面的示例会生成此错误,因为类 C 两次实现接口 A:
正确的实现语句应为 | |
| 1168 | 对函数 %s 的赋值非法。 |
正在尝试重新定义函数。例如,以下内容定义 topLevel() 函数以输出单词“top”。第二个语句会生成错误,因为该语句赋给该函数不同的返回值:
| |
| 1169 | 不允许在接口方法中使用命名空间属性。 | ||
| 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 为固定属性。只能删除动态定义的属性。 | Delete 将删除对象中动态定义的属性。无法删除类的已声明属性。只有当编译器在严谨模式下运行时才会出现此错误。 | |
| 1190 | 找不到基类,或者它不是编译时常量。 | ||
| 1191 | 找不到接口,或者它不是编译时常量。 | ||
| 1192 | 在 namespace 定义中不允许使用 static 属性。 | ||
| 1193 | 接口定义不能嵌套在类或其他接口定义中。 | ||
| 1194 | prototype 属性无效。 | ||
| 1195 | 尝试访问的方法 %s(通过静态类型为 %s 的引用来访问)不可访问。 | 要么从其他类调用 private 方法,要么调用未使用的命名空间中定义的方法。如果调用的是未使用的命名空间中定义的方法,请为必需的命名空间添加 use 语句。
| |
| 1196 | 语法错误: throw 之后应为表达式。 | ||
| 1197 | 类 %s 不能扩展 %s,因为两者均与库符号或主时间轴关联。 | ||
| 1198 | 在包的定义中不允许使用属性。 | ||
| 1199 | 内部错误: %s。 | ||
| 1200 | 语法错误: for-in 初始值设定项无效,应该只包含一个表达式。 | ||
| 1201 | this、super、return 或 throw 语句后面不能出现 super 语句。 | ||
| 1202 | 所访问的属性 %s(在包 %s 中)未定义。 |
正在尝试访问包中未定义的变量。例如,如果未定义变量 p.huh,则调用该变量时会生成此错误:
仅当编译器在严谨模式下运行时,才会出现这种错误。
| |
| 1203 | 在基类 %s 中找不到默认构造函数。 | 如果基类的构造函数带有一个或多个必选参数,则必须使用 super() 语句显式调用该构造函数。 | |
| 1204 | 找到的 /* 没有匹配的 */。 | 找到了指示注释开始位置的字符“/*”,但找不到指示注释块结束位置的对应字符“*/”。 | |
| 1205 | 语法错误: 应有左大括号 ({) 或字符串文字 ("")。 | ||
| 1206 | 只能将 super 语句用作构造函数初始值设定项列表中的最后一项。 |
不能在构造函数的内部使用 super 语句。只能将 super 语句用作构造函数初始值设定项列表中的最后一项。
| |
| 1207 | 不能在属性初始值设定项中使用 this 关键字。 |
不能在属性初始值设定项的内部使用 this 关键字。
| |
| 1208 | 配置值的初始值设定项必须是一个编译时常量。 | 配置值的初始值设定项必须是一个编译时已知的值。此初始值设定项可以是常量字符串、数字、布尔值或对先前定义的其他配置值的引用。 | |
| 1209 | 只能将配置变量声明为 const。 | 在定义配置变量时,必须将该变量声明为 const。 | |
| 1210 | 必须在程序或包的顶级声明配置值。 | 必须在程序或包的顶级声明配置值。 | |
| 1211 | 命名空间 %s 与某个配置命名空间存在冲突。 | 命名空间不能与配置命名空间同名。 | |
| 1212 | 精度必须为一个介于 1 和 34 之间的整数。 | ||
| 1214 | 版本不兼容: 引用定义 %s(在版本 %s 中引入)无法在版本 %s 的代码中进行。 | ||
| 1215 | 初始化无效: 转换为类型 %s 时丢失数据。 |
Tue Jun 12 2018, 11:20 AM Z