Код: Выделить всё
while(true);
test 1: < /strong> < /h2>
Код: Выделить всё
public class While {
public static void main(String[] args) {
System.out.println("start");
while (true);
System.out.println("end");
}
}
< /code>
Компилятор бросает мне ошибку: < /em> < /strong> < /p>
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Unreachable code
at While.main(While.java:6)
< /code>
Я не знал, что эта ошибка существует. Но я понял, почему это брошено. Конечно, строка 6 была недоступна [/b], вызывая проблему с компиляцией. Затем я проверил это: < /p>
[b] test 2: < /strong> < /h2>
public class While {
public static void main(String[] args) {
System.out.println("start");
a();
b();
}
static void a() {
while(true);
}
static void b() {
System.out.println("end");
}
}
< /code>
По какой -то причине Программа работала нормально < /strong> (консоль напечатана "Start", а затем замерзла). Компилятор не мог проверить внутри void a()
test 3: < /strong> < /h2>
Код: Выделить всё
public class While {
public static void main(String[] args) {
System.out.println("start");
a();
System.out.println("end");
}
static void a() {
while(true);
}
}
< /code>
тот же результат, что и тест. Strong> Вопрос [/b]. Итак, если код внутри скобок является переменной, компилятор не бросил бы исключение . Это имеет смысл, но я не думаю, что то же самое относится и к [b]voids
Q: Итак, почему компилятор просто бросает мне ошибку в тесте 1, если < Strong>
Код: Выделить всё
void b()
Код: Выделить всё
System.out.println("end");
#include
using namespace std;
int main()
{
cout
Подробнее здесь: https://stackoverflow.com/questions/241 ... -in-a-void