我注意到Integer.parseInt()
你不必用try catch包围它,或者声明该方法可能抛出一个异常,尽管它"抛出"了一个NumberFormatException
.
为什么我不必明确地捕获NumberFormatException
或声明我的方法抛出它?
因为那是一个"运行时"异常.
RuntimeExceptions用于识别编程问题(一个优秀的程序员可以避免)
检查的异常是为了识别环境问题(无论您编程有多好,无法避免,例如服务器停机)
你可以在这里阅读更多相关信息
实际上有三种例外,只应处理其中一种(大多数时候)
Throwable / \ Error Exception / \ *checked* RuntimeException \ *unchecked*
有关Checked与Unchecked异常的详细说明,请参阅Thinking in Java.
有些人认为检查异常的想法是失败的实验.例如,Spring和Hibernate都使用未经检查的异常,并且经常在未经检查的版本中包装已检查的异常.
NumberFormatException扩展了RuntimeException,您不必显式处理从RuntimeException继承的任何内容.
其他RuntimeExceptions类似于NullPointerException和IndexOutOfBoundsException.这些是程序员可以避免的事情,不得不尝试/捕获这些类型的异常会产生一些非常混乱的代码.