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

如果某个方法抛出未在方法声明中使用“ throws”指定的异常,会发生什么情况

高山
2023-03-14
问题内容

我从来没有使用过“
throws”子句,今天有一位队友告诉我,我必须在方法声明中指定方法可能抛出的异常。但是,我一直在使用没有问题的异常而没有这样做,因此,如果实际上需要它,为什么还要使用它呢?


问题答案:

Java有两种不同类型的异常: 选中的 异常和 未选中的 异常。

未检查的异常是的子类,RuntimeException您无需添加throws声明。所有其他异常都必须在方法体内使用try /
catch语句或throws声明进行处理。

未检查异常的示例:IllegalArgumentException有时用于通知已调用带有非法参数的方法。无需抛出。

检查异常的示例:包IOException中的某些方法java.io可能会抛出。使用try / catch或添加throws IOException到方法声明中,然后将异常处理委托给方法调用者。



 类似资料:
  • 上一节展示了如何为ListOfNumbers类中的writeList方法编写异常处理程序。 有时,它适合代码捕获可能发生在其中的异常。 但在其他情况下,最好让一个方法进一步推给上层来调用堆栈处理异常。 例如,如果您将ListOfNumbers类提供为类包的一部分,则可能无法预期包的所有用户的需求。 在这种情况下,最好不要捕获异常,并允许一个方法进一步推给上层来调用堆栈来处理它。 如果writeLi

  • 问题内容: 在下面的源代码中,我抛出一个。 为什么没有必要将关键字放在方法的签名上? 问题答案: 仅在Java 1.7上会出现此现象。使用1.6进行编译时,出现以下编译器错误消息: 但是,使用Java 1.7可以编译。 …直到我实际把一个块扔了进去: 编译中… 看起来Java 1.7足够聪明,可以通过分析块代码来检测可能抛出的类型,而1.6刚看到类型并为此给出了错误。 对其进行更改以使其按预期方式

  • 问题内容: 因此,我认为我对Java中的异常处理有很好的基本了解,但是最近我正在阅读一些使我有些困惑和怀疑的代码。我要在这里解决的主要疑问是,何时一个人使用时会抛出如下所示的Java方法声明: 通过阅读一些类似的文章,我收集到的 引发信息 被用作一种声明, 表明 可以在方法执行期间引发 SomeException 。 我的困惑来自一些看起来像这样的代码: 在此示例中,您是否有任何理由要使用 抛出

  • 问题内容: 如果我有抛出未检查的异常的方法,例如: 明确声明该方法引发异常有什么好处,即 与(或除了)描述javadoc中的行为相反: 我之所以声称拥有无效的原因是: 没有提供有关在什么情况下会引发异常的信息,只是提供了 可能 引发异常的信息; 因为它是未经检查的异常,所以我不必在调用代码中处理该异常。我只会真正知道,如果我去看看的实现,可能会抛出该错误; 的主体可能会调用引发其他类型的未经检查的

  • 所以我必须做以下其中之一: 在每个doSomething调用周围添加try catch块 在main中添加throws语句 删除doSomething中的throws语句 将该条件作为前提条件,这样不遵循该条件就会导致未定义的行为或类似的行为。 3将不起作用,因为doSomething可能会在客户端使用时引发异常。1和2简直是多余的,我认为应该避免。 我的问题是:在提到的选项(或任何其他选项)中,