参考答案:
1.throw是语句抛出一个异常,一般是在代码块的内部,当程序出现某种逻辑错误时由程序员主动抛出某种特定类型的异常
2.throws是声明一个异常,写在方法函数头
3.当某个方法可能会抛出某种异常时用于throws 声明可能抛出的异常,然后交给上层调用它的方法程序处理
4.throws出现在方法函数头;而throw出现在函数体.throws表示出现异常的一种可能性,并不一定会发生这些异常; throw则是抛出了异常,执行throw则一定抛出了某种异常对象。两者都是消极处理异常的方式(这里的消极并不是说这种方式不好),只是抛出或者可能抛出异常,但是不会由函数去处理异常,真正的处理异常由函数的上层调用处理。
5.如果try块中抛出了一个在catch子句中说明的异常类,throw后面的语句无法执行,如果写了语句,是无法通过编译的。
6.无论是否抛出异常finally语句块最终都会执行
throw和throws的区别:
1、throw代表动作,表示抛出一个异常的动作;
throws代表一种状态,代表方法可能有异常抛出
throw用在方法实现中,而throws用在方法声明中;
throw只能用于抛出一种异常,而throws可以抛出多个异常
2、throw关键字用来在程序中明确的抛出异常,相反 throws语句用来表明方法不能处理的异常。
每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。
3、throw是在代码块内的,即在捕获方法内的异常并抛出时用的
throws是针对方法的,即将方法的异常信息抛出去
可以理解为throw是主动(在方法内容里我们是主动捕获并throw的),而throws是被动(在方法上是没有捕获异常进行处理,直接throws的)
例子:
public void str2int(String str) throws Exception { //这里将得到的异常向外抛出
try {
System.out.println(Integer.parseInt(str));
} catch(NumberFormatException e) {
//TODO 这里可以做一些处理,处理完成后将异常报出,让外层可以得到异常信息
throw new Exception("格式化异常");
}
}
4、throws用于方法头部,声bai明该方法会抛出du什么类型的异常;
throw用于方法体中,zhi抛出某种类型的异常。
5、作用不同:throw用于在程序中抛出异常,throws用于声明在该方法内抛出了异常。
使用位置不同:throw位于方法体内部,可以作为单独语句是用,throws必须跟在方法参数列表后面,不能单独使用。
内容不同:throw抛出一个异常对象,而且只能是一个,throws后面跟异常类,可以有多个。