Man*_*uPK 1 java compiler-construction exception
假设我在Java类中有以下行,
System.out.println("start");
if(true)//The compiler will give compile time error if I uncomment this.
throw new RuntimeException();
System.out.println("end");
Run Code Online (Sandbox Code Playgroud)
如果if(true)被注释,将出现无法访问的代码错误消息.为什么编译器不知道下面的行if(true)总会被执行?
Java编译器是设计为这样工作还是限制?
它是围绕代码可达性的有意设计的一部分.参见JLS的第14.21节,其底部有一节.
这种不同处理的基本原理是允许程序员定义"标志变量",例如:
Run Code Online (Sandbox Code Playgroud)static final boolean DEBUG = false;然后编写如下代码:
Run Code Online (Sandbox Code Playgroud)if (DEBUG) { x=3; }我们的想法是,应该可以将DEBUG的值从false更改为true或从true更改为false,然后正确编译代码而不对程序文本进行其他更改.
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |