java初识: 异常

异常

1、finally(无论异常是否发生都执行)

finally包含哪些处理逻辑

  1. IO流的关闭操作(不关闭会存在端口,传输占用资源)
    类比return:
    (1) 返回值;
    (2)中断或关闭当前程序(考查多个return的执行情况, finally前的return值放置于内存区,执行中若finally中存在对return对值进行处理,则返回处理后的值—— finally中的return优先级高于try中的return),下例返回num=100.
    情况一: try中有return,finally中没有return
    情况二: : try和finally中均有return
    在这里插入图片描述
    情况三:finally中改变返回值num
    finally位于try-catch结构内部,num存于内存中,执行完finally后新赋值的num没有返回,故返回的num值仍为10——作用域问题。
    在这里插入图片描述
    情况四:将num的值包装在Num类中——函数传递
    finally中没有返回语句,但改变了值,若数据为引用类型(传递函数),则语句返回值变化;若定义的是基本类型,则值不改变。

面试问题:
* try-catch块中存在return语句,是否还执行finally语句,若执行,说出执行顺序。
* try-catch-finally块中,finally块唯一不执行的情况是什么?*

2、异常出现时可以使用try -catch- finally形式处理,除此之外也可以在方法中向外抛出——throw

(若在方法中存在多个方法之间的调用,若每个方法出包含了异常情况,使用throws统一处理异常优于每个方法中都进行try-catch操作)

main 函数: throws Exception__ 声明异常
稳妥办法:每个方法中都进行异常处理;
偷懒办法: 判断调用过程中外层调用是否有异常处理,有则直接throws,否则使用try-catch.

异常抛出自定义: `throw new Exception("output error")` 
或定义异常类 extends Exception 	
1、继承Exception类;
2、自定义实现构造方法;
3、需要使用的时候,使用throw new自定义异常的名称;

什么时候需要使用到自定义异常: 一般不需要,但当业务需求异常格式规范统一、需自己实现的时候时需要;

父类:
Object --> Throwable --> Exception \ Error (系统级错误)–> Exception中包含Checked(必须处理)\RuntimeException(运行)

子类
Object
Throwable
Exception
Error
Checked
RuntimeException
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值