Java抛出关键字



我不小心声明了一个抛出异常的方法,(IllegalArgumentException(,但我忘了使用throws
我认为这是强制性的,我想知道为什么代码在没有任何警告/错误的情况下编译。
如果它不是强制性的,那么它的目的是什么?

不能引发throws子句不允许的已检查异常。 但是,IllegalArgumentException运行时异常,您不必声明它吗?

Java 中有两种 (四( 种Throwable

  1. Exceptions(和子类(:您需要捕获它们或在消息签名处声明抛出
  2. RuntimeExceptions(和子类(:顾名思义,发生这种情况是因为运行时出现故障(例如,对 null 的方法调用(。这些可以声明,但不必声明(如果你这样做,一些静态代码分析工具会抱怨(。他们可以而且应该在某个地方被抓住。
  3. Errors(和子类(:这些事情超出了当前代码的范围(例如OutOfMemoryError(。这些不应该被抓住,因为你对它们无能为力......
  4. 正如@kayaThrowable自己所说:既不应该被扔,也不应该被抓住。

最新更新