当前位置: 首页 > 面试题库 >

不鼓励抛出通用异常?

楚苏燕
2023-03-14
问题内容

当通常足以处理方法中的大多数条件失败时,为什么不建议抛出泛型(java.lang.Exception)异常?我知道,如果一个方法可以抛出多种类型的异常,那么抛出异常的特定子类可能会澄清一些处理,但是在一般的失败/成功案例中,我认为Exception的作用已绰绰有余。


问题答案:

问题在于,Exception它也是的超类RuntimeException,其中包含一些不应捕获的内容,因为它表明编程存在问题,而不是由上下文引起的特殊情况。通常情况下,您不想捕获BufferOverflowException或UnsupportedOperationException。此外,抛出单独的Exception类型可以使调用代码控制如何处理每种异常。Java
7中使用新的多捕获功能减少了样板。



 类似资料:
  • 问题内容: C#目前发展势头良好。切换(或返回)Java 需要 具备哪些功能? 如果人们发布当前Java版本的变通方法,例如将Nullable包裹在自定义类中,以使其成为更有趣的Wiki,那也将非常有用。 问题答案: 作为.NET / C#开发人员,这里缺少让我烦恼的功能。此列表没有特别的顺序-正如想到的那样: Java库太小。对于普通的事情,我必须在5种竞争性开源产品之间进行选择,因为基本库在很

  • 大多数在线来源都表明您可以静态链接glibc,但不鼓励这样做;例如centos包repo: glibc静态包包含用于静态链接的C库静态库。你不需要这些,除非你静态链接,这是非常不鼓励的。 这些消息来源很少(或从未)说明为什么这是个坏主意。

  • 问题内容: 在我目前正在处理的项目中,我经常看到和在字段中一起使用。我从未在任何教程或其他资源中以这种方式看到过它。我用谷歌搜索了这个特定的组合,但是除了在GitHub上的这个线程外没有找到其他东西:https : //github.com/mockito/mockito/issues/169 这让我觉得我们在以一种奇怪的方式使用它。 注意:我认为有时同时使用两个批注是有道理的,因为如果仅使用 M

  • 抛出异常的行为是否可能抛出不同的异常? 为了抛出异常,必须(可选地)分配新对象,并调用其构造函数(隐式调用fillinstacktrace)。在某些情况下,听起来像addSupressed也被称为。那么如果没有足够的内存会发生什么呢?JVM是否需要预分配内置异常?例如,(1/0)会抛出OutOfMemoryError而不是ArithmeticException吗? 此外,构造函数是一个方法调用,因

  • 问题内容: 这是来自Hibernate的官方教程: 还有一个替代声明,该声明允许使用组合键访问旧数据。强烈建议不要将其用于其他任何用途。 为什么不鼓励使用复合键?我正在考虑使用一个三列表,其中所有列都是外键,并且一起形成一个主键,这在我的模型中是有意义的关系。我不明白为什么这是一个坏主意,特别是我将在它们上使用索引。 有什么选择?创建一个额外的自动生成的列并将其用作主键?无论如何,我仍然需要查询我