3 回答
TA贡献1872条经验 获得超3个赞
如果 是 声明局部变量, 则在将其赋值之前使用它是错误的;请参阅@Eran对JLS相关部分的回答。int i;
编译错误和编译时错误是同义词。(编译器错误是另一个同义词,尽管有时人们用它来指代编译器中的错误。
这是否使它成为语法/编译器错误?
这是一个编译错误。但这不是语法错误。
这种类型的编译错误通常称为语义错误。
语法错误意味着代码不符合语言的指定语法(由语法定义)。换句话说,解析器无法解析它。
语义错误是任何不是语法错误的编译错误。根据编程语言的不同,语义错误可能包括以下内容:
编译时类型错误
编译器无法解析的符号
对上下文具有错误种类的符号
无法访问的代码
使用未初始化的变量
等等。
还是 IDE 足够智能可以捕获的运行时错误?
这不是运行时错误。
实际上,这是编译器错误,但从技术上讲不是语法错误吗?
正确。
我一直认为它们是同义词,但也许语法错误只是编译器错误的一种类型......
它们不是同义词。语法错误只是编译错误的一种。
(不幸的是,一些Javascript实现令人困惑地将所有编译错误称为“语法错误”。但是,如果您正在教授Java,那么这无关紧要。Java不是Javascript。
TA贡献1803条经验 获得超3个赞
这是一个编译时错误,由 JLS 指定:
局部变量声明语句是可执行语句。每次执行时,声明符都按从左到右的顺序进行处理。如果声明器具有初始化表达式,则计算该表达式并将其值分配给变量。
如果声明符没有初始化表达式,则对变量的每次引用之前都必须执行对变量的赋值,否则 §16 的规则会发生编译时错误。
添加回答
举报