异常有一个层次结构java
,其顶部是一个类Throwable
。
问题:编译错误(例如,我没有在必要的地方放置分号)是类的对象Throwable
吗?如果编译错误不是类Throwable
对象,IDE在编译不正确的程序文本时会抛出什么类对象?
异常有一个层次结构java
,其顶部是一个类Throwable
。
问题:编译错误(例如,我没有在必要的地方放置分号)是类的对象Throwable
吗?如果编译错误不是类Throwable
对象,IDE在编译不正确的程序文本时会抛出什么类对象?
编译错误可以是 class 的对象
Throwable
。或者也许不是。这一切都取决于编译器的具体实现。将编译器想象成一个黑盒子,它有一个插槽,可以接受 java 文件但输出类文件或编译错误消息。盒子里面是什么?
如果编译器是用 java 实现的,错误消息可能是也可能不是异常机制的结果。您可以查看 OpenJDK 源代码。为此,您需要了解编译的各个阶段:词法分析、解析等。
一般来说,编译器可以用其他一些语言来实现,那么它与Java异常完全无关。
尽管如此,发出编译错误的机制与您正在编译的程序无关。如果编译器抛出异常,它会由编译器在内部处理,并且您只会得到结果,即带有错误消息的字符串。
此外,编译器错误机制与 IDE 无关。IDE 可以简单地向您显示它从编译器收到的消息。或者它可以在运行编译器之前独立检查代码并以其他方式显示错误(例如,红色下划线)。
是的。类
Error
继承类Throwable
,部分错误Error
具体描述为: