java会编译失败吗?_Java为什么会有“无法到达的语句”编译器错误?

小编典典

因为无法到达的代码对编译器毫无意义。尽管使代码对人有意义不仅比使代码对编译器有意义更困难,但编译器是代码的基本使用者。Java的设计者认为对编译器没有意义的代码是错误。他们的立场是,如果你有一些无法访问的代码,那么你犯了一个错误,需要修复。

这里有一个类似的问题:无法访问的代码:错误还是警告?,其中作者说:“我个人强烈认为这应该是一个错误:如果程序员编写一段代码,那么在某些情况下应该始终实际运行它。” 显然,Java的语言设计师对此表示赞同。

无法访问的代码是否应该阻止编译是一个永远不会达成共识的问题。但这就是Java设计人员这样做的原因。

有很多评论的人指出,Java无法阻止编译的代码种类很多。如果我正确理解了Gödel的后果,那么没有编译器可以捕获所有无法访问的代码类。

单元测试无法捕获每个错误。我们不以此为理由反对它们的价值。同样,编译器无法捕获所有有问题的代码,但是对于编译器而言,它可以防止编译错误代码,这仍然很有价值。

Java语言设计人员将无法访问的代码视为错误。因此,在可能的情况下防止其编译是合理的。

(在否决票之前:问题不是Java是否应具有不可到达的语句编译器错误。问题是Java 为什么会有不可达的语句编译器错误。请不要仅仅因为你认为Java做出了错误的设计决定就对我进行否决。)

2020-03-13

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>