Java异常常见问题

子类声明异常的范围不能超过父类声明的范围:

1.父类没有声明异常,子类也不能;
2.不可以抛出原有方法抛出异常类的父类或者上层类
3.抛出的异常"类型"数目不可以比原有方法抛出的还多(注意类型数目)

RuntimeEXcepton编译不要求强制处理异常。

Java中凡是继承自Exception,而不继承自RuntimeException类的异常都是非运行时异常。
注意: 必须抛出的异常为编译时异常, 运行时异常(RuntimeException)不用抛出。也就是说如果抛出的异常是RuntimeException的子类,方法名后不用写throws+异常类名如果Exception(非RuntimeException)的子类,则使用throw关键字抛出异常后需要在方法名后写明throws+异常名

抛出(throws)异常后,调用者的catch语句中参数只能是抛出(throws)异常的继承树,不能是旁支。

当异常处理中存在return时,finally的执行特征:finally块前有return语句,finally依然执行。finally前有System.exit(0),finally不执行。

try catch finally 存在return语句的执行顺序

1.try里面有return, finally里面没有return,返回return保存的值
2.try和finally中均有return 返回finally重新赋的值
3.try里面有return finally里面没有return finally中改变值num,返回try里面的return的值
4.try里面有return,finally里面没有return,finally中改变返回的引用类型的属性值num,返回try里面return保存的值

throw throws区别

throws在方法后边声明异常,其实就是自己不想对异常做出任何的处理,告诉别人自己可能出现的异常,交给别人处理,然别人处理throw:就是自己处理一个异常,有两种方式要么是自己捕获异常try…catch代码块,要么是抛出一个异常(throws 异常)
1. throws:用来声明一个方法可能产生的所有异常,不做任何处理而是将异常往上传,谁调用我我就抛给谁。
用在方法声明后面,跟的是异常类名可以跟多个异常类名,用逗号隔开表示抛出异常,由该方法的调用者来处理throws表示出现异常的一种可能性,并不一定会发生这些异常
2. throw:则是用来抛出一个具体的异常类型。
用在方法体内,跟的是异常对象名
只能抛出一个异常对象名
表示抛出异常,由方法体内的语句处理
throw则是抛出了异常,执行throw则一定抛出了某种异常

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值