2022-07-29 第三小组 孙翰章 学习笔记

JAVA13


1.异常

(1)下标越界

(2)空指针

(3)类型转换异常

(4)数字格式化

(5)算术异常(数学异常)

#当一个程序抛出异常时,抛异常后面的语句不再执行,类似于return的功能,终止方法的执行


2.异常的体系结构

#最顶级的Throwable:错误,异常

(1)Error:正常情况下,不太可能出现,绝大多数Error都会导致程序处于一个非正常的状态下, 基本上很难恢复。在外力的作用下,不考虑。Error是Throwable的子类,它是在Java 程序处理范围之外的。

(2)Exception:在Java语言中,将程序执行中发生的不正常的情况称之为异常。Exception也是 Throwable的子类。

        a:编译期异常:写代码的时候,抛异常。如果编译器不解决,会编译不通过。

        b:运行期异常:RuntimeException,运行时会抛异常,平时没事。


3.自定义异常

Java中异常机制虽然很完善,但是结合实际业务还差很多。

例如:年龄出现负数需要自定义异常、电商搜索乱码需要自定义异常。

(1)怎么自定义异常?

        a:所有的异常必须是Throwable的子类(大材小用,没必要)

        b:如果要定义一个编译期异常,需要继承Exception类

        c:如果要定义一个运行期异常,需要继承RuntimeException类

        在一个语句块中,如果使用throw抛出一个编译期异常,就必须在方法的声明处使用throws关键字来标记异常类型。

        还有一种处理方式,直接try ... catch。

(2)我们为什么要手动抛异常?

        因为要配合全局异常处理机制来解决问题


4.throw

(1)throw语句是可以当做方法的返回值的。在一个有返回值的方法中,如果有条件分支,一定要保证每种情况下都有返回值,哪怕是抛异常。开发中,大部分情况下使用的都是运行期异常。

(2)异常链

        一个异常被抛出去之后会继续被调用这个方法的方法捕获或抛出,异常会扩散。

        只要说解决异常、处理异常、捕获异常就是try ... catch。


5.throws

如果一个方法没有捕获一个编译期异常,该方法必须使用throws来声明

(1)在方法里直接try ... catch解决

 (2)在方法里抛异常给主函数,在主函数里try ... catch解决

规定:主方法里不允许继续往下抛异常

throws并不是真正的解决了异常,只是把异常抛给了下一级调用者。


6.面试题

(1)throws和throw的区别

        throws出现在方法的声明处,可以抛出多个异常(用逗号隔开)。

(2)finally关键字

        finally用来创建在try代码块后面执行的代码块。

        无论是否发生异常,finally代码块中的代码一定会执行。一班finally中的代码都是用来释放资源的。

        Finally无论是否出现异常,都会执行。

(3)try ... catch、finally执行顺序

        finally永远是在最后执行的

        catch可以写多个异常(可以捕获多个异常)  顺序问题:先写小的,再写大的

        重写的另一个规则:重写的方法不能抛出比被重写方法更大的异常类型


学习了抛异常 晚上做了空指针和面向对象的大案例 能够理解并掌握 还跟很多同学交流讨论了做法

天气雨 心情良好 脚伤后第一次晨练 似乎忘记了刚打完疫苗不能剧烈运动 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值