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

抛出异常时的Java最佳实践:抛出核心Java异常

钮瀚
2023-03-14
问题内容

除了抛出new Exception("Some message", maybeSomeCause),这意味着我方法的所有调用者都需要捕获Exception(可以包含RuntimeExceptions),我想在出现问题时抛出一种更特定类型的异常。

我可以创建自己的扩展了Exception或其他异常类型的异常类型,但是我很好奇是否可以重用Java语言所附带的一些异常,例如:

  • IllegalArgumentException
  • UnsupportedOperationException
  • IOException
  • 其他?

还有其他我想念的吗?我在这里找到了有关“核心”异常的基本列表:http:
//rymden.nu/exceptions.html,并有大量解释。

谢谢!

编辑:

是否有很好的“核心”例外清单?

到目前为止的清单:

  • http://rymden.nu/exceptions.html
  • Java 7异常类API

问题答案:

是的,这样做非常好。实际上,它甚至是在《 有效Java》第二版中写的。 请参阅第248页上的第60项:“优先使用标准异常”

重用预先存在的异常有几个好处。其中最主要的一点是,它使您的API更易于学习和使用,因为它符合程序员已经熟悉的既定惯例。紧随其后的是,使用您的API的程序更易于阅读,因为它们不会被不熟悉的异常所困扰。最后(也是最少),较少的异常类意味着较小的内存占用空间和较少的加载类时间。



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

  • 问题内容: 我目前正在使用play2框架。 我有几个正在抛出的类,但是play2s全局处理程序使用throwable而不是异常。 例如我的一门课是抛出一个。我是否可以检查可抛物体(如果是)? 问题答案: 您可以使用它来检查它是否存在。 例: 假设是参考。

  • 问题内容: Visual Studio有一个选项,可以在引发未处理的异常时自动将其插入调试器,Eclipse是否具有类似的功能? 问题答案: 即使未捕获到这些异常,您也可以定义要在其上创建断点的确切的异常列表(应该等效于“ unhandled”)

  • 我读过这段代码,其中接口抛出异常,但实现它的类没有抛出异常或捕获异常,这是为什么?它在java中是合法的还是安全的?

  • 主要内容:throws 声明异常,throw 拋出异常Java 中的异常处理除了捕获异常和处理异常之外,还包括声明异常和拋出异常。实现声明和抛出异常的关键字非常相似,它们是 throws 和 throw。 可以通过 throws 关键字在方法上声明该方法要拋出的异常,然后 在方法内部通过 throw 拋出异常对象。本节详细介绍在 Java 中如何声明异常和拋出异常。 throws 声明异常 当一个方法产生一个它不处理的异常时,那么就需要在该方法的头部

  • 问题内容: 考虑以下代码: 无需添加方法签名即可编译该代码。(它与同样表现到位,太)。 我理解为什么 可以 安全地运行它,因为实际上不能将其引发在块中,因此不能引发已检查的异常。我有兴趣知道在何处指定此行为。 并非永远都不会达到目标:以下代码也会编译: 但是,如果抛出一个检查的异常,它不会像我期望的那样编译: 在JLS Sec 11.2.2中 ,它说: 一,其抛出的表达式语句(§14.18)具有静