Java面试题-throw 和 throws的区别

throw 和 throws

throw:

  • 表示方法内抛出某种异常对象
  • 如果异常对象是非 RuntimeException 则需要在方法申明时加上该异常的抛出 即需要加上 throws 语句 或者 在方法体内 try catch 处理该异常,否则编译报错
  • 执行到 throw 语句则后面的语句块不再执行

throws:

  • 方法的参数后加上 throws 表示这个方法可能抛出某种异常
  • 需要由方法的调用者进行异常处理
  • 只有一类异常,抛出的时候方法可以不用声明,就是RuntimeException异常。

throws用在方法声明后面,跟的是异常类名,throw用在方法体内,跟的是异常对象名。

throws可以跟多个异常类名,用逗号隔开,throw只能抛出一个异常对象名。

throws表示抛出异常,由该方法的调用者来处理,throw表示抛出异常,由方法体内的语句处理。

throws表示出现异常的一种可能性,并不一定会发生这些异常,throw则是抛出了异常,执行throw则一定抛出了某种异常。

package exception;


/**
* 使用当前类测试异常的抛出
*/
public class Person {
   
	private int age;

	public int getAge() {
   
		return age;
}

	public void setAge(int age) throws Exception{
   
		if(age <0 || age > 100){
   
//throw new RuntimeException("年龄不合法");
/**
* 当一个方法中使用throw抛出一个异常时
* 就要在当前方法上使用throws声明该异常的抛出以便通知调用
* 在调用当前方法时要处理异常。
* 只有RuntimeException及其子类在抛出时
* 编译器不要求必须写throws声明,其他异常则必须声明
* 否则编译不通过。
*/
			throw new Exception("年龄不合法");
//抛出异常的目的就是为了告诉外界,这里可能会抛出异常
//如果这里用try-catch
//写throw的目的就是为了告诉外界这里可能会有问题
//处理别人抛出的异常时,才用try-catch或throws
/**
* 为什么在以前写流的时候一定要捕获异常,
* 那是因为流的构造方法里就抛出了异常,在创建的时候,我们必须捕获这个
* 异常,处理异常。
*/
}
		this.age = age;
}

}
package exception;
/**
* 测试异常的抛出
*/
public class ThrowDemo {
   
	public static void main
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值