Java - 异常处理 - 抛出

时间:2014-02-12 04:02:50

标签: java exception throws

我知道javac强迫程序员处理需要由方法抛出或使用try-catch / finally处理的已检查异常。并且它不会阻止程序员抛出未经检查的异常。

我也知道为什么我们尝试catch / finally并理解为什么java会检查某些异常集。

但我无法理解以下内容:

Q1)为什么方法会“抛出”异常。我们从它中获得的好处是什么?我认为,无论是抛出还是不投掷使用“抛出”的方法都会发生同样的事情!

Q2)当方法“抛出”异常时,内部会发生什么?

Q3)我认为“错误”与“异常”的分类不同,只是为了突出它们“程序员在发生时不会有太大的事情”,但我们可以“抛出”“试试” /最后“像往常一样”和其他一切也与“异常”相同 * s。如果我错了,请纠正我。

请帮帮我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

K我们走了:

Q1)为什么方法会“抛出”异常。我们从中获益的是什么?

一个方法应该提及抛出异常时它无法处理它抛出的异常(该方法必须指定此行为以便方法的调用者)可以防范这种例外。)

Q2)当方法“抛出”异常时,内部会发生什么?

当方法抛出异常时,控件将被传递给方法的调用者及其调用者是否具有必要的catch块来处理方法抛出的异常。如果调用者有一个catch块来处理异常,那么异常将被处理并且程序继续。如果调用者没有必要的方法来处理抛出它的异常,则异常将由处理默认异常处理程序。

对于您的第3个问题,请阅读完整参考书中的这个块:

所有异常类型都是内置类Throwable的子类。因此,Throwable位于异常类层次结构的顶部。紧接在Throwable下面的是两个子类,它们将异常划分为两个不同的分支。一个分支由Exception领导。此类用于用户程序应捕获的异常条件。这也是您将创建自己的自定义异常类型的子类。 Exception有一个重要的子类,叫做RuntimeException。为您编写的程序自动定义此类型的异常,并包括除以零和无效数组索引等内容。

另一个分支以错误为首,它定义了程序在正常情况下不会捕获的异常。 Java运行时系统使用类型错误的异常来指示与运行时环境本身有关的错误。堆栈溢出是这种错误的一个例子。本章不会处理Error类型的异常,因为这些异常通常是为了响应您的程序通常无法处理的灾难性故障而创建的。

相关问题