JAVA异常抛出问题!

来源:百度知道 编辑:UC知道 时间:2024/06/28 09:20:05
1.
方法名 throws……
{}
2.
方法名

方法体
if…… throw ……

3.
方法名 throws……

方法体
if…… throw……


如上面三种情况,我想知道在什么情况下方法名后得加throws、方法体里同时得有throw,而什么情况下却只需要
这两处的任一处有抛出就行了,我有点搞不懂
书本里上面三种情况都出现过,可是却没说为什么!

对于RuntimeException 和他的子类,都可以不进行throws声明,其他的必须使用throws声明,否则不能编译。
搂主是对throws的声明"会抛出一个异常"和throw"真正的抛出一个异常"弄混了。

所以,第一种情况可以声明throws任何异常。通常是调用了一些已经声明了throws异常的函数,例如,调用java.io.的函数,通常会声明抛出异常,因此,要么声明抛出,要么捕获。
第二种情况中,throw的一定是RuntimeException或其子类。
第三种情况中,throws的一般就是throw的异常,如:
func () throws SomeException
{
if ( ... ) throw new SomeException () ;
}