并不是绝对需要
try/catch为您的例外设置一个阻止。相反,您可以将
throw它们交给能够正确处理异常的人。
有两种例外:已检查和未检查。检查异常 可以考虑
一个由编译器发现,编译器知道它有发生的机会,所以你需要
catch或者
throw它。例如,打开一个文件。它有机会失败,并且编译器知道这一点,因此您不得不这样做
catch或
throw可能这样做
IOException。
未检查的异常 可以被认为 是有可能发生的异常,但是根据您的代码,编译器并不知道。换句话说,这是 编程错误
。例如,如果您接受用户输入并期望输入数字,而用户输入了您未期望的内容(例如字符串),则程序将抛出
NumberFormatException。您可以预测这些情况,并
try/catch尽力避免它们发生。很少有人看到有人添加
throwsNullPointerException或
throwsNumberFormatException(或抛出任何其他未经检查的异常)。允许,但是显式创建该异常很奇怪,大多数人会说这是不好的编码风格。
请注意,所有“已检查”建议都 必须 被捕获或扔给可以处理的建议;如果不这样做,程序将无法编译。如果将其扔到无法处理的地方,那么程序可能会崩溃。
还要注意,未经检查的异常(例如,在运行时发生的异常,通常是由于用户输入错误或诸如此类的错误)通常也会使程序崩溃。因此,通常在有可能发生问题的情况下使用它是一个好主意
try/catch,但是
您不必这样做 。
还值得注意的是,虽然Checked异常是Exception的子类,Unchecked异常是RuntimeException的子类,但RuntimeException本身是Exception的子类。这意味着,如果您确实愿意,那么一个函数
try{} catch (Exception e){}将捕获程序可能抛出的每个异常。当然,这被认为是处理异常的一种可怕方法,您应该分别捕获每个异常,以便可以分别处理它们。请尽量不要使用它。


