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后面跟异常类,可以有多个。