以下是编译器遇到无效代码时生成的编译错误列表。只有在严谨模式下编译代码时,才能检测到这些错误的子集。严谨模式添加了标准语言中没有的三种约束:

表达式有静态类型,且类型错误为验证错误。
附加验证规则捕获常见编程错误。
提前报告验证错误。以下验证错误仅在严谨模式下出现:
函数调用签名匹配,将检查所提供的参数数目及其类型。
重复定义冲突。
访问编译时未定义的方法或属性时出现未绑定的引用。
在密封对象上动态添加属性。
写入常量变量。
删除固定属性。
比较使用不兼容类型的表达式。
未找到包。

代码 消息 说明
1000 对 _ 的引用不明确。 引用可能指向多项。例如,下面使用了 rss 和 xml 命名空间。每个命名空间为 hello() 函数定义了不同的值。trace(hello()) 语句返回此错误,因为它无法确定使用哪个命名空间。

private namespace rss;

private namespace xml;


public function ErrorExamples() {

   use namespace rss;

   use namespace xml;

   trace(hello());

}


rss function hello():String {

   return "hola";

}


xml function hello():String {

return "foo";


}通过使用具体的引用来纠正不明确的引用。下面的示例 使用 namespace::function 这种格式指定所要使用的命名空间:

public function ErrorExamples() {


trace(rss::hello());

trace(xml::hello());

}


1003 不允许将访问说明符与命名空间属性结合使用。 不能在定义中同时使用访问说明符(如私有或公共)和命名空间属性。
1004 找不到命名空间,或者命名空间不是编译时常量。 该命名空间未知,或是运行时可能具有不同值的表达式。检查命名空间的拼写及其定义的导入是否正确。
1006 super 表达式只能在类实例方法的内部使用。
1007 super 语句只能在类实例构造函数的内部使用。 不能在静态成员的内部使用 super 语句。只能在类实例的内部使用 super 语句。
1008 属性无效。
1010 override 属性只能在类的属性定义中使用。 不能在函数块的内部使用 override 关键字。
1011 virtual 属性只能在类的属性定义中使用。 声明的属性不属于某个类时(例如在函数块的内部声明某个变量时),不能使用 virtual 属性。
1012 static 属性只能在类内部的定义中使用。
1013 private 属性只能在类的属性定义中使用。
1014 不再支持 intrinsic 属性。 ActionScript 3.0 does not support the intrinsic keyword.
1016 基类为 final 类。 无法扩展超类,因为它标记为 final。
1017 找不到基类 _ 的定义。
1018 类的定义 _ 重复。
1020 标记为 override 的方法必须覆盖其它方法。
1021 函数的定义重复。 在同一个范围内,不能使用相同的标识符名称声明多个函数。
1022 不能覆盖 final 存取器。
1023 覆盖不兼容。 标记为 override 的函数必须与所要覆盖的函数的参数和返回类型声明完全匹配。它必须具有相同数量的参数,且每个参数的类型相同,还必须声明相同的返回类型。如果任何一个参数是可选的,该函数也必须与此参数匹配。这两个函数还必须使用相同的访问说明符(如公共和私有等)或命名空间属性。
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 this 关键字不能在 static 方法中使用。它只能在实例方法、函数闭包和全局代码中使用。 不能在静态成员的内部使用 this 关键字,因为 this 可能没有上下文。
1043 命名空间未定义。
1044 接口方法 _(属于命名空间 _)未经类 _ 实现。
1045 找不到接口 _。
1046 找不到类型,或者类型不是编译时常量 _。 用作类型声明的类未知,或是运行时可能具有不同值的表达式。检查导入的类是否正确以及该类的包位置是否尚未更改。此外,检查包含代码的包(不是导入的类)是否正确定义(例如,确保使用正确的 ActionScript 3.0 包语法,而不是 ActionScript 2.0 包语法)。

如果所要引用的类没有在使用的命名空间中定义或未定义为公共,也会出现该错误:

public class Foo{}如果正在使用 Flex™ Builder™ 2 并且该类存在于库中,请确保为项目设置类路径。

1047 参数的初始值未知,或不是编译时常量。 用作该参数默认值的值未定义或在运行时可能具有不同的值。检查初始值设定项的拼写是否正确,以及初始值设定项的值是不是一个会在运行时导致产生不同值的表达式。
1048 方法不能用作构造函数。 不能创建类方法的实例。只有全局函数才能在 new 表达式中使用。
class D { function xx() { return 22; } }
var d:D = new D();
var x = new d.xx(); // 错误,方法不能用作构造函数
function yy() { this.a = 22; }
var z = new yy(); // 无错误,全局函数可以用作构造函数。
1049 对指定为常量的变量的赋值非法。
1050 不能赋给非引用值。
1051 返回值必须是 undefined。 正在试图在声明了 void 返回类型的方法中使用 return 语句。
1052 常量的初始值未知,或不是编译时常量。 用来初始化该常量的值是 undefined,或在运行时可能具有不同的值。检查初始值设定项的拼写是否正确,以及初始值设定项的值是不是一个会在运行时导致产生不同值的表达式。
1053 存取器类型必须匹配。
1054 setter 定义的返回类型必须是 unspecified 或 void。 不能为 setter 函数指定返回值。例如,下面的语句无效:
public function set gamma(g:Number):Number;下面的语句是 有效的:

public function set gamma(g:Number):void;
1058 属性是只写的。
1059 属性是只读的。 此属性通过 getter 函数定义,因此,可以检索该属性的值。但是,不存在为此属性定义的 setter 函数,因此,该属性是只读的。
在下面的示例中,第 3 行会生成错误,因为不存在为 xx 定义的 setter 函数:

class D { function get xx() { return 22; } }
var d:D = new D();
d.xx = 44; // 错误,属性是只读的
1061 调用可能未定义的方法 _(通过静态类型为 _ 的引用来调用)。 所要调用的方法未定义。
1063 无法打开文件 _。
1064 元数据无效。 无法识别此元数据。
1065 元数据的属性不能包含多个元素。
1067 将 _ 类型的值隐式强制为无关 _ 类型。 正在试图将对象转换为无法转换成的类型。如果所要转换的类不在正在转换的对象继承链中,可能会出现这种情况。仅当编译器在严格模式下运行时,才会出现这种错误。
1068 无法打开包含的文件 _。
1069 语法错误:应有定义或指令。 Check the syntax in the line.
1071 语法错误:定义关键字(如 function)应在属性 _ 之后,而不是 _ 之后。 如果作者忘记在声明中使用“var”和“function”关键字,将会出现此错误。
public int z;// 应为“public var z:int;”编译器遇到意外字符时,也会出现此错误。例如,由于缺少括号,下面使用的 trace() 函数无效(正确的语法是 trace("hello")):
import flash.utils.trace;
trace "hello"
1072 语法错误:命名空间之前应有 xml。 正确的语句语法是 default xml namespace = ns。或者缺少关键字 xml(注意小写),或者使用了错误的关键字。有关详细信息,请参阅默认的 xml 命名空间指令。
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 语法错误:遇到意外的 _。 代码行缺少某些信息。在下面的示例中,最后一个加号的后面必须带有某个表达式(如其它数字):
var sum:int = 1 + 2 + ;
1084 语法错误:应有 _(_ 之前)。 此处不需要该表达式。如果错误是“程序结束之前应有右括号”,则表示代码块缺少右大括号 (})。
如果错误是“_ 之前应有左括号”,则表示条件表达式中可能遗漏括号,如下面的示例(有意出错)所示:

var fact:int = 1 * 2 * 3;
if fact > 2 {
   var bigger:Boolean = true;
}
1086 语法错误:_ 之前应有分号。
1087 语法错误:程序结束之后找到额外的字符。
1093 语法错误。
1094 语法错误:字符串文字必须在换行符之前终止。
1095 语法错误:字符串文字必须在换行符之前终止。
1097 语法错误:输入已在到达字符串文字的右引号之前结束。
1099 语法错误。
1100 语法错误:XML 没有匹配的开始和结束标签。
1102 不能删除超级后代。
1103 命名空间的定义重复。 已多次定义该命名空间。请删除或修改重复的定义。
1105 赋值的目标必须是引用值。 可以给变量赋值,但是不能将一个值赋给另外一个值。
1106 递增操作数必须是引用。 操作数必须是变量、数组中的元素或对象的属性。
1107 递增操作数无效。 操作数必须是变量、数组中的元素或对象的属性。
1108 递减操作数无效。 操作数必须是变量、数组中的元素或对象的属性。
1109 应有表达式。 代码的一部分缺少表达式。例如,下面的代码会生成此错误(if 语句中缺少某项条件):
var x = (5 > 2) ?
trace(x)
1110 缺少 XML 标签名称。
1112 可能会出现无限递归问题,因为此文件包含 _。 所要编译的源代码中包含的某文件中包含可能导致无限循环的其它 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 在 _ 中检测到循环类型引用。 类正在尝试扩展超类。例如,如果类 B 从类 A 继承而来,则 A 不能扩展 B:
class a extends b { }
class b extends a { }
1114 public 属性只能在包的内部使用。
1115 internal 属性只能在包的内部使用。
1116 用户定义的命名空间属性只能在顶级的类定义中使用。
1118 将静态类型为 _ 的值隐式强制为可能无关的类型 _。 所要使用的值不是预期的类型,不存在将其转换为预期类型的隐式强制。
可能使用的是超级类型,但需要的是子类型。例如:

class A {}
var a:A = new A();
class B extends A { function f() }
var b : B = a // 错误最后一个语句会出错,因为该语句尝试将类型 A 的对象赋给类型 B 的变量。

同样,下面定义的 foo() 函数采用了类型为 B 的参数。语句 foo(a); 会出错,因为该语句试图使用类型为 A 的参数:

function foo(x:B) { }
foo(a);此外,下面的语句也会出错,因为 foo2() 的返回值必须为类型 B:

function foo2():B { return new A(); }
1119 访问可能未定义的属性 _(通过静态类型为 _ 的引用来访问)。 正在尝试访问的属性对于指定对象不存在。例如,下面的代码会生成此错误,因为 int 对象没有名为 assortment 的属性:
var i:int = 44;
var str:String = i.assortment;仅当编译器在严格模式下运行时,才会出现这种错误。
1120 访问未定义的属性 _。 正在试图访问未定义的变量。例如,如果尚未定义变量 huh,调用该变量时会生成此错误:
huh = 55;只有编译器在严格模式下运行时,才会出现此错误。
1121 getter 定义不能包含参数。
1122 setter 定义只能包含一个参数。
1123 setter 定义不能包含可选参数。
1124 getter 定义的返回类型不能为 void。 getter 函数模拟变量。由于变量类型不能为 void,因此不能将 getter 函数声明为返回类型 void。
1125 接口中定义的方法不能包含方法体。
1126 函数没有函数体。
1127 已多次指定属性 _。 在同一语句中多次指定了某个属性。例如,语句 public static public var x; 会生成此错误,因为该语句两次指定变量 x 是公共变量。请删除重复的声明。
1129 接口的定义 _ 重复。 请更改或删除重复的定义。
1130 构造函数不能指定返回类型。
1131 不能嵌套类。
1132 final 属性只能在类中定义的方法内使用。
1133 native 属性只能与函数定义结合使用。
1134 dynamic 属性只能与类定义结合使用。
1135 语法错误:_ 不是有效类型。
1136 参数数目不正确。数目应为 _。 函数需要的参数数目与提供的参数数目不同。例如, 下面定义的函数 goo 具有两个参数:
class A { static function goo(x:int,y:int)
{ return(x+y); } }下面的语句可能会出错,因为该语句提供了三个参数:

A.goo(1,2,3);
1137 参数数目不正确。不应超过 _ 个。
1138 可选参数之后不允许有必需的参数。
1139 不允许在接口中声明变量。
1140 如果参数是在 ...rest 参数定义关键字之后指定的,则只能是 Array 数据类型。
1141 一个类只能扩展另外一个类,而不能扩展接口。
1142 一个接口只能扩展另外一个接口,但 _ 是一个类。 正在试图使用接口扩展类。一个接口只能扩展另外一个 接口。
1143 override 属性只能在类中定义的方法内使用。
1144 接口方法 _(属于命名空间 _)使用类 _ 中不兼容的签名进行实现。 方法签名必须完全匹配。
1145 Native 方法不能包含方法体。 不能使用 native,因为它是一个保留关键字。
1146 构造函数不能是 getter 或 setter 方法。
1147 未指定 AS 源文件。
1149 return 语句不能在静态初始化代码中使用。
1150 protected 属性只能在类的属性定义中使用。
1151 定义 _(属于命名空间 _)存在冲突。 在同一个范围内,不能使用相同的标识符名称声明多个变量,除非所有这些变量都声明为相同的类型。在 ActionScript 3.0 中,不同的代码 块(例如在同一个函数定义中的两个 for 循环中使用的块) 视为属于同一个范围。
下面的代码示例可以正确地将变量 x 转换为相同类型:

function test()

{

   var x:int = 3;

   for(var x:int = 33; x
< 55; x++)

   trace(x);

   for(var x:int = 11; x
< 33; x++)

   trace(x)

}下面的代码示例会生成错误,因为变量声明和 for
循环中的类型转换是不同的:


function test()

{

   var x:String = "The answer
is";

   for(var x:int = 33; x
< 55; x++) // 错误

   trace(x);

   for(var x:unit = 11; x
< 33; x++) // 错误

   trace(x)

}


1152 继承的定义 _(属于命名空间 _)存在冲突。
1153 只能将构造函数声明为公共函数。
1154 只能在定义中指定 public、private、protected 或 internal 之一。
1155 不能在其它函数的内部嵌套存取器。
1156 不能使用新运算符实例化接口。
1157 接口成员不能声明为 public、private、protected 或 internal。
1158 语法错误:函数体之前缺少左大括号 ({)。
1159 return 语句不能在包的初始化代码中使用。
1160 native 属性不能在接口定义中使用。 不能使用 native,因为它是一个保留关键字。
1162 每个定义中只能使用一个命名空间属性。
1163 方法 _ 与从接口 _ 继承的定义冲突。
1165 接口属性 _ 无效。
1166 Namespace declarations are not permitted in interfaces.
1167 类 _ 多次实现接口 _。 该类多次实现同一个接口。例如,下面的示例会生成此错误,因为类 C 两次实现接口 A:
interface A { public function f(); };
class C implements A,A {
public function f() { trace("f"); }
}正确的实现语句应为 class C implements A {。

1168 Illegal assignment to function _. 正在试图重新定义函数。例如,下面定义的函数 topLevel() 要输出“top”一词。第二个语句会生成错误,因为该语句赋给该函数不同的返回值:
function topLevel() { trace("top"); }
topLevel = function() { trace("replacement works in ~");} // 错误
1169 不允许在接口方法中使用命名空间属性。
1170 函数没有返回值。 如果返回类型不是 void,函数中每个可能的控制流都必须返回值。下面的函数 f(x) 不会生成错误,因为 if..else 语句总是返回值:

function f(x):int

{

if (x)

   return 2;

else

   return 3;

} // 无错误但是,下面的函数 g(x)
会生成该错误,因为 switch
语句并非总是返回值。


function g(x:int):int

{

switch(x)

{

   case 1: return 1;

   case 2: return 2:

}

// return 2;//取消注释可清除该错误

}只有函数声明的返回类型不是 void
时,才启用此检查。



1171 命名空间初始值必须是文字字符串或其它命名空间。
1172 找不到定义 _。
1173 标签定义无效。
1176 将静态类型为 _ 的值与可能无关的类型 _ 进行了比较。 在严格模式下会生成此错误。
1177 return 语句不能在全局初始化代码中使用。
1178 尝试访问不可访问的属性 _(通过静态类型为 _ 的引用)。
1180 调用可能未定义的方法 _。 仅当编译器在严格模式下运行时,才会出现这种错误。
1181 转发对基类 _ 的引用。
1182 包不能用作值 _。
1184 使用了类型 _ 的不兼容默认值,但是应为 _。
1185 switch 包含多个默认值,但是只能使用一个默认值。
1188 对类 _ 的赋值非法。
1189 试图删除固定属性 _。只能删除动态定义的属性。 delete 会从对象中动态删除定义的属性。不能删除类的声明属性。仅当编译器在严格模式下运行时,才会出现这种错误。
1190 找不到基类,或基类不是编译时常量。
1191 找不到接口,或接口不是编译时常量。
1192 不允许在命名空间定义中使用 static 属性。
1193 不能在类或其它接口定义中嵌套接口定义。
1194 prototype 属性无效。
1195 试图访问不可访问的方法 _(通过静态类型为 _ 的引用)。 要么从其它类调用 private 方法,要么调用未使用的命名空间中定义的方法。如果调用的是未使用的命名空间中定义的方法,请为必需的命名空间添加 use 语句。
1196 语法错误:throw 之后应有表达式。
1197 类 _ 不能扩展 _,因为二者都与库符号或主时间轴关联。
1198 不允许在包的定义中使用属性。
1199 内部错误:_。
1200 语法错误:for-in 初始值无效,只能有 1 个表达式。
1201 this、super、return 或 throw 语句之后不能出现 super 语句。
1202 访问未定义的属性 _(属于包 _)。 正在试图访问包中未定义的变量。例如,如果尚未定义变量 p.huh,调用该变量时会生成此错误:
p.huh = 55;仅当编译器在严格模式下运行时,才会出现此错误。
1203 在基类 _ 中未找到默认构造函数。 如果有 1 个或多个必选参数,则必须使用 super() 语句显式调用基类的构造函数。
1204 . 发现了指示注释开始位置的字符“”。