gpt4 book ai didi

java - 为什么编译器没有捕捉到这个错误?

转载 作者:行者123 更新时间:2023-11-29 10:06:52 25 4
gpt4 key购买 nike

当我在死线程上调用 start 方法时,我在运行时得到 java.lang.IllegalThreadStateException,但编译正常。

class Foo implements Runnable {

public void run() {

}

public static void main(String [] args) {
Runnable r = new Foo();
Thread t = new Thread(r);

t.start();
t.start();
}
}

我的问题是为什么 Java 编译器没有捕捉到此类错误?

最佳答案

因为这是语义错误。句法错误和语义错误之间的界限是模糊的,但通常捕捉所有语义错误是不可能的(参见 halting problem )因此语言设计者和编译器编写者必须在保护程序员免受自身影响和足够快的编译之间做出权衡。

要捕获此特定错误,编译器需要了解线程库的语义。它不会,因为 Java 中的线程被设计为库的一部分,而不是语言的一部分。

关于java - 为什么编译器没有捕捉到这个错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5541924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com