Java方法包含另一个抛出异常的方法

Java方法包含另一个抛出异常的方法,java,Java,在方法A内部,有方法B。方法B抛出异常,但方法A即使不捕获异常或抛出异常,也会抛出异常,这可能吗 方法B如下所示: MethodB() throws SomeException{ if(Some) doneSomething return else if(some) donesomethingElse return throw SomeException } 如果SomeException扩展。那么即使签名

在方法A内部,有方法B。方法B抛出异常,但方法A即使不捕获异常或抛出异常,也会抛出异常,这可能吗

方法B如下所示:

MethodB() throws SomeException{
   if(Some)
        doneSomething
        return
   else if(some)
        donesomethingElse
        return 
   throw SomeException  
}

如果
SomeException
扩展。那么即使签名看起来像那样,你也不需要捕捉它


还请注意,在这种情况下,您只需删除抛出某些异常的
。阅读更多信息。

是的,存在一些未检查的异常,这些异常可能不会被捕获/重新捕获


请看本教程-。

即使
SomeException
是选中的异常,也可能由于单独编译而发生这种情况

假设您编写了一个类:

public class B {
  public static void foo() {
  }
}
然后是一个调用它的类:

public class A {
  public static void main(String[] args) {
    B.foo();
  }
}
然后说:

javac A.java
java A
一切都很好。现在改变B:

public class B {
  public static void foo() throws java.io.IOException {
    throw new java.io.IOException();
  }
}
这次只需在运行之前编译B:

javac B.java
java A
你会得到:

Exception in thread "main" java.io.IOException
    at B.foo(B.java:4)
    at A.main(A.java:4)

在现实世界中,当单个.jar文件被不理解添加更多
throws
子句所导致问题的维护人员修改后被更新时,就会发生这种情况。

是的,
SomeException
RuntimeException
的子类。