根据Java语言规范Java SE 8 Edition,§14.21无法到达的语句:
如果由于无法访问而无法执行语句,则为编译时错误。
标准继续精确定义可达 / 无法访问,可以正常完成意味着什么。
因此,不能在代码中的无法访问的位置放置assert false;
或throw new RuntimeException("can't reach here");
之类的语句,因为这会导致编译错误。
是否有标准或通用的方法在代码中标记无法访问的点而不引入编译错误,例如带有某些特殊语法的注释(例如//unreachable
)?希望还有一些lint工具可以自动验证这些标记确实对应于无法访问的点,类似于this question询问某个C代码库中的特殊注释。
我问的原因是因为我有一段代码,其中包含一个冗长的if / else if / else块链,每个(当前)以return
语句结束。但是,我预计可能会添加另一个条件块,我将忘记以return
语句结束,从而导致switch
语句中无意识的掉落。另一个潜在的用途是确保某个条件代码块始终从循环中断开。
答案 0 :(得分:0)
我想知道是否有办法以不是编译错误的方式标记无法访问的点。
除了注释掉代码之外,Java语言无法做到这一点。