- Java编程从入门到精通
- 胡平 刘涛主编
- 883字
- 2025-04-02 16:03:10
1.6.1 语法错误
语法错误是指源文件的某些代码不符合编程语言的语法规范(如缺少了一个分号),具有语法错误的程序是不能运行的——因为无法通过编译[1]。
编译源文件时,编译器会分析源文件的语法,若有错误则会给出错误所在的行号与描述信息,因此,语法错误的定位与修改较为简单。以前述HelloWorld.java为例,现对其做几处修改以故意制造语法错误:将第3行中的public改为Public、删除第8行中的结束双引号。保存并重新编译,结果如图1-17所示。

图1-17 编译有语法错误的源文件
可见,编译器不仅提示了错误的个数,而且还给出了每个错误所在的行号(源文件名后的数字)、具体位置(由“^”指示)及描述(行号后的文字)等,但需要注意以下几点。
(1)编译器提示的错误个数可能不准确。如刚才制造了2个语法错误,但编译器提示有4个。实际上,后3个错误都是由同一个错误引起的——缺少了结束双引号。因此,不要总是试图在程序中找出与提示相一致的错误个数。比较好的做法是,每改正一个错误(或所有能够确定的错误)后立即保存并重新编译。
(2)编译器提示的错误描述信息也不一定准确。如第3个错误提示第8行需要分号,但该行并不缺少分号,而是缺少结束的双引号。由于Java中的字符串字面值都是用一对双引号括起来的,而该错误实际上已被第2个错误提示描述了。
(3)一般来说,提示的错误所在行号总是准确或相对准确的。因此,要根据错误所在行号并结合描述信息及位置,综合判断出真正的错误所在。
语法错误还包括一类不安全的、无效的、或在特定情况下可能引发逻辑错误的“轻微错误”。例如,声明了从未被用到的变量、存在永远都不可能被执行到的代码、使用了原始类型的容器等,这类“错误”被称为警告。
严格来说,警告并不属于语法错误的范畴,有警告的源文件依然能够被成功编译并运行,并且通常不会影响程序的运行逻辑。因此,警告的去除并不是必须的,但出于可靠性和代码优化的角度,去除警告将有助于降低运行程序时出现逻辑错误的可能性[2]。
此外,大多数编程语言的编译器以及IDE都提供了多种编译选项,允许以不同的宽松级别对待程序中的警告。对于Java语言,还可以通过注解机制有选择地“抑制”程序中的某些警告(详见第14章)。