Java 手动抛出异常 throw

Java 手动抛出异常 throw

Java 中异常对象的生成有两种方式:

  • 由虚拟机自动生成:程序运行过程中,虚拟机检测到程序发生了问题,那么针对当前代码,就会在后台自动创建一个对应异常类的实例对象并抛出。

  • 由开发人员手动创建new 异常类型([实参列表]);,如果创建好的异常对象不抛出对程序没有任何影响,和创建一个普通对象一样,但是一旦throw抛出,就会对程序运行产生影响了。

使用格式

throw new 异常类名(参数);

为什么还需要手动抛出异常?

在实际开发中,如果出现不满足具体场景的代码问题,我们就有必要手动抛出一个指定类型的异常对象

例如,在Student类中,有属性id,实际开发需求,希望id是正数,而不是负数,可以通过手动抛出异常的情况处理

public class ThrowTset{
    public static void mian(String []args){
        Student s1 = new Student();
        s1.register(-10);	//id 不是正数
    }
}
class Student{
    int id;
    public void register(int id){
        if(id > 0){
            this.id = id;
        }else{
            //手动抛出异常
            throw new RuntimeException("输入非法id");
        }
    }
}
//运行结果
//Exception in thread "main" java.lang.RuntimeException: 输入的id非法
//	at Throwable.Student.register(ThrowTest.java:17)
//	at Throwable.ThrowTest.main(ThrowTest.java:6)

手动和自动的理解

抓抛模型

自动抛:程序在执行的过程中,一旦出现异常,就会在出现异常的代码处,生成对应异常类的对象,并将此对象抛出,一旦抛出异常,此程序就不执行其后的代码了

手动抛:程序在执行过程当中,不满足指定条件的请胯下,我们主动使用throw + 异常类的对象方式抛出异常对象

狭义上讲,try-catch的方式捕获异常,并处理

广义上讲,把抓理解为处理,则此时有两种处理异常的方式,try-catch-finallythrows

throw和throws的区别

  • 从形式来讲

​ throws是使用在方法的声明处,将产生的异常向上抛出

​ throw 使用在方法内部,表示手动抛出一个异常类的对象

  • 从解决问题上来讲

​ throw是产生一个异常对象

​ throws是针对于异常对象,做出一个解决异常的方案

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值