我注意到Integer.parseInt()你不必用try catch包围它,或者声明该方法可能抛出一个异常,尽管它"抛出"了一个NumberFormatException.
为什么我不必明确地捕获NumberFormatException或声明我的方法抛出它?
         Throwable
         /      \
      Error    Exception
                /     \
           *checked*  RuntimeException
                            \
                         *unchecked*
有关Checked与Unchecked异常的详细说明,请参阅Thinking in Java.
有些人认为检查异常的想法是失败的实验.例如,Spring和Hibernate都使用未经检查的异常,并且经常在未经检查的版本中包装已检查的异常.
NumberFormatException扩展了RuntimeException,您不必显式处理从RuntimeException继承的任何内容.
其他RuntimeExceptions类似于NullPointerException和IndexOutOfBoundsException.这些是程序员可以避免的事情,不得不尝试/捕获这些类型的异常会产生一些非常混乱的代码.