Java重修笔记 第三十天 异常

  • 异常的分类

1. Error(错误):Java虚拟机无法解决的致命问题,例如StackOverflowError[栈溢出]

2. Exception(异常):其它因编程错误或偶然的外在因素导致的一般性问题,可以使用针对性的代码进行处理。例如空指针访问,试图读取不存在的文件,网络连接中断等等,Exception又分为两大类:运行时异常(不用立刻处理)和编译时异常(需要立刻处理)。

  • 五大运行时异常

1. NullPointerException空指针异常

        如果一个引用对象地址为null时,调用该对象的成员会抛出该异常。

2. ArithmeticException数学运算异常

        被除数为0时抛出该异常。

3. ArraylndexOutOfBoundsException数组下标越界异常

        如果数组索引为负或者大于数组长度-1时抛出该异常。

4. ClassCastException类型转换异常

        试图一个将对象强制转换为不是该实例的子类时,抛出该异常。

5. NumberFormatException数字格式不正确异常

        当应用程序试图将字符串转换成一种数值类型,但该字符串不能转换为适当格式时,抛出该异常 => 使用异常我们可以确保输入是满足条件数字。

  • 异常处理的两种方式

1. try-catch-finally,捕获异常并尝试解决

2. throws 将异常抛出,交给调用者(方法)来处理,顶级处理者为JVM

  • try-catch-finally细节

1. 快捷键:ctrl + alt + t

2. try代码块里某一行代码发生异常后,直接跳到catch代码块,try后面的代码就不会执行了

3. 如果try代码块没有异常发生,则不会进入catch代码块里,会顺序执行finally代码块如果有的话

4. finally代码块是无论如何都要执行的,哪怕return也要执行,不管有没有进catch代码块。

5. 可以有多个catch语句,用来捕获不同的异常进行不同的业务处理,但是要求子类异常在前,父类异常在后,例如NullPointerException必须在Exception异常前面。

6. try-finally组合可以省去catch代码块,但这意味着不对异常进行处理,一旦遇到异常会直接执行finally代码块后程序崩掉

  • throws细节

1. 可以throws该异常的父类

2. 可以抛出多个异常,接收时也需要接收对应的异常

3. 子类重写的方法,抛出的异常类型必须是父类方法对应异常或是其子类异常,例如父类抛出Exception,子类必须为Exception的子类异常,也就是说子类重写后异常类型需要更加精确

4. 运行时异常若不处理,默认throws抛出,例如f1()方法抛出RuntimeException,f2()方法接收就不用专门去throws这个RuntimeException了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值