为什么我可以覆盖一些抛出异常的方法?

1 java exception

我正准备自己进行测试,我发现这段代码我不明白.

如果我覆盖这样的方法,它就无法编译.好,可以.我必须在第2行抛出一个父异常,(比如抛出异常),它会工作得很好......但是,为什么有可能呢,用public void charlie改变第7行抛出NullPointerException?这会编译得很好,因为我仍然没有在第2行中抛出任何东西.

    1.public class A {
    2.  public void charlie() 
    3.  {
    4. 
    5.  }
    6.  class B extends A{
    7.      public void charlie() throws IOException
    8.      {}
    9.  }
    10.}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 8

NullPointerException是一个未经检查的异常(因为它扩展RuntimeException).它永远不需要声明,并且可以声明它而不会影响其他任何东西.

您应该修改对已检查和未检查的异常的理解.

Java异常教程可能是一个合理的起点.