Java 已检查与未检查异常统计信息

Java 已检查与未检查异常统计信息,java,exception,Java,Exception,在厌倦了说服同龄人以争论的方式放弃检查异常之后,我正在寻找任何统计数据,来说明有多少程序员喜欢检查异常,有多少程序员不喜欢使用检查异常。 网络上有这样的调查/投票/统计吗?如果有这样的调查,你的奶牛工人难道不认为网络上的坏程序员比好程序员多吗?他们会期望有更多的坏程序员投票支持未经检查的例外情况吗?所以这并不能真正解决你的问题 有两个数据点让我信服: afaik中没有任何其他语言实现者从Java复制检查过的异常。就在其他语言中流行而言,这是一个彻底的失败。如果这个功能有什么优点的话,有人会把它

在厌倦了说服同龄人以争论的方式放弃检查异常之后,我正在寻找任何统计数据,来说明有多少程序员喜欢检查异常,有多少程序员不喜欢使用检查异常。

网络上有这样的调查/投票/统计吗?

如果有这样的调查,你的奶牛工人难道不认为网络上的坏程序员比好程序员多吗?他们会期望有更多的坏程序员投票支持未经检查的例外情况吗?所以这并不能真正解决你的问题

有两个数据点让我信服:

  • afaik中没有任何其他语言实现者从Java复制检查过的异常。就在其他语言中流行而言,这是一个彻底的失败。如果这个功能有什么优点的话,有人会把它用于他们的新语言

  • 从Spring到Hibernate再到JavaEE,框架编写者之间已经有了一场广泛的运动,用未检查的异常替换许多已检查的异常


除此之外,你还可以试着检查你的项目代码,找出检查过的异常是如何导致异常被吃掉或到处都是无用的“抛出异常”子句的问题的例子。

如果有这样一项调查,你的奶牛工们会不会争辩说,网络上的坏程序员比好程序员多,他们会期望更多糟糕的程序员投票支持未经检查的异常吗?所以这并不能真正解决你的问题

有两个数据点让我信服:

  • afaik中没有任何其他语言实现者从Java复制检查过的异常。就在其他语言中流行而言,这是一个彻底的失败。如果这个功能有什么优点的话,有人会把它用于他们的新语言

  • 从Spring到Hibernate再到JavaEE,框架编写者之间已经有了一场广泛的运动,用未检查的异常替换许多已检查的异常


除此之外,您还可以尝试查看项目的代码,并找到检查异常如何导致异常被吃掉或到处都是无用的“抛出异常”子句等问题的示例。

如何将它们指向Java教程:

其中包括最后一行,清楚地总结了关键点:

下面是一条底线准则:如果 可以合理预期客户 从异常中恢复,使其成为 检查异常。如果客户不能 做任何事来恢复健康 异常,将其设置为未选中 例外


让他们看看Java教程如何:

其中包括最后一行,清楚地总结了关键点:

下面是一条底线准则:如果 可以合理预期客户 从异常中恢复,使其成为 检查异常。如果客户不能 做任何事来恢复健康 异常,将其设置为未选中 例外


<> P>一个有很多语言和框架的问题,它们从C++中导出了一般的异常处理概念,就是很多事物都被有效地编码在异常的类型中。如果在抛出和捕获站点(而不是在异常声明中)对选中的异常与未选中的异常进行了区分,并且如果有一种方法可以简洁地指定特定选中的异常应作为未选中的异常进行重试,那么选中的异常将是一个好概念。不幸的是,Java要求给定类型的任何异常总是作为已检查的异常抛出,或者总是作为未检查的异常抛出,这取决于类型,并且没有提供方便或简洁的方法来将已检查的异常映射到未检查的异常。相反,它使检查异常作为检查异常渗透最为方便,这增加了“麻烦”因素,同时降低了它们的有用性


如果已检查异常是在抛出站点实现的,并且如果处理不需要的已检查异常的正常方法是将其转换为未检查的,则可以确保通过抛出特定已检查异常来指示特定故障条件的方法只会在“需要”时抛出该已检查异常报告该特定故障;如果相同类型的异常在方法执行过程中意外发生,它将转换为未检查的异常。这样的“检查的异常”模型可能很有用,也可能导致比正常异常更高效的代码(因为检查的异常必须在抛出它们的例程的直接调用方中处理,所以可以跳过正常异常处理所需的大部分堆栈展开和堆栈跟踪)。不幸的是,java的“检查异常”不起作用。

< P>一个有许多语言和框架的问题,它们从C++中导出了一般的异常处理概念,就是太多的事物在异常类型中被有效地编码了。如果在抛出和捕获站点(而不是在异常声明中)对选中的异常与未选中的异常进行了区分,并且如果有一种方法可以简洁地指定特定选中的异常应作为未选中的异常进行重试,那么选中的异常将是一个好概念。不幸的是,Java要求给定类型的任何异常总是作为已检查的异常抛出,或者总是作为未检查的异常抛出,这取决于类型,并且没有提供方便或简洁的方法来将已检查的异常映射到未检查的异常。相反,它使检查异常作为检查异常渗透最为方便,这增加了“麻烦”因素,同时降低了它们的有用性

如果在抛出站点执行检查异常,并且如果处理不需要的检查异常的正常方法是将其转换为未检查异常,则可以确定通过thr指示特定故障条件的方法