throw和throws的区别以及异常的相关知识

一,引出问题

  • Java程序的执行过程中如出现异常,会生成一个异常类对象,该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常

  • 如果一个方法内抛出异常,该异常对象会被抛给调用者方法中处理。如果异常没有在调用者方法中处理,它继续被抛给这个调用方法的上层方法。这个过程将一直继续下去,直到异常被处理。这一过程称为捕获(catch)异常

  • 如果一个异常回到main()方法,并且main()也不处理,则程序运行终止。

二,throw和throws的区别

1.throw是语句抛出一个异常,throws是方法可能抛出异常的声明

2.throw出现在函数体,throws出现在方法函数头

3.throw是指抛出一个异常的动作,而throws代表一种状态,指的是可能有异常抛出。

4.throw只能用于抛出一种异常,而throws可以抛出多个异常。

自我理解:throw是在方法内,对可能出现的异常抛出一个异常对象,是new了一个对象,而throws是用在方法上,是声明一个异常,声明之后让这个方法的调用者进行处理,如果调用者不处理,接着throws向上抛出给上面的调用者,直到处理为止,那怎么处理呢,就是用try。。。catch。。。进行处理。

三,throw和throws面对受检异常和非受检异常的不同处理

受检异常需要throw和throws配合使用————throw抛出一个异常对象,然后throws声明向上给它的调用者

但是如果是非受检异常,也就是运行时异常,就不需要throw和throws配合使用,直接throw一个异常对象就可以————因为是非受检异常,所以不是必须throws,运行时才会出现异常。

 附:康师傅的课件中的图解释一下发生异常时的执行流程

异常处理的体会

  • RuntimeException类或是它的子类,这些类的异常的特点是:即使没有使用try和catch捕获,Java自己也能捕获,并且编译通过 ( 但运行时会发生异常使得程序运行终止 )。所以,对于这类异常,可以不作处理,因为这类异常很普遍,若全处理可能会对程序的可读性和运行效率产生影响。

  • 如果抛出的异常是IOException等类型的非运行时异常,则必须捕获,否则编译错误。也就是说,我们必须处理编译时异常,将异常进行捕捉,转化为运行时异常

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值