每日学到 26 - 异常

目录

异常

1.什么是异常

2.什么是异常处理

3.如何进行异常处理

4.try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一

1)try-catch

2)try-catch-finally           

5.多重catch块

6.声明异常

7.抛出异常

8.自定义异常

9.异常链

10.异常处理原则


异常

1.什么是异常

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

2.什么是异常处理

Java编程语言使用异常处理机制为程序提供了错误处理的能力

3.如何进行异常处理

Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws

①try
                执行可能产生异常的代码

②catch
                捕获异常

③finally
                无论是否产生异常,代码总能执行

④throw
                手动抛出异常

⑤throws
                声明方法可能要抛出的各种异常

4.try-catch-finally结构中try语句块是必须的,catch、finally语句块均可选,但两者至少出现之一

1)try-catch

public void method(){
         try {
                // 代码段 1
                // 产生异常的代码段 2
                // 代码段 3
         } catch (异常类型 ex) {
                 // 对异常进行处理的代码段4
         }
         // 代码段5
}

①代码不产生异常,则执行完try中语句后,正常执行try-catch后的代码段

②代码产生异常对象与catch中异常类型相匹配,进入catch后的对异常进行处理的代码段,再执行try-catch后的代码段
             在catch后的对异常进行处理的代码段中,使用异常对象调用方法输出异常信息
                     e.printStackTrace();

③代码产生异常对象与catch中异常类型不匹配,程序中断运行。

2)try-catch-finally           

public void method(){
         try {
               // 代码段 1
              // 产生异常的代码段 2
          } catch (异常类型 ex) {
              // 对异常进行处理的代码段3
               return;
          }finally{
                // 代码段 4
          }
}

finally中的代码段是否发生异常都执行;

不执行的唯一情况try或catch代码段中包含System.exit(1);即出现中断程序,则不执行finally中代码段

存在return的try-catch-finally块中,先正常执行代码,遇到return时,先执行finally块,再return退出方法

5.多重catch块

引发多种类型的异常
            排列catch 语句的顺序:先子类后父类
            发生异常时按顺序逐个匹配
            只执行第一个与异常类型匹配的catch语句

6.声明异常

throws声明某个方法可能抛出的各种异常,多个异常用逗号隔开
        如果在一个方法体中抛出了异常,如何通知调用者?
               方式1:调用者处理异常
               方式2:调用者继续声明异常
                       main()方法声明的异常由Java虚拟机处理

7.抛出异常

1)throw

                    生成并抛出异常
                    位于方法体内部,可作为单独语句使用
                    抛出一个异常对象,且只能是一个

2)throws

                    声明方法内抛出了异常
                    必须跟在方法参数列表后面,不能单独使用
                    声明抛出异常类型,可以跟多个异常

8.自定义异常

定义异常类

编写构造方法,继承父类的实现

实例化自定义异常对象

使用throw抛出

9.异常链

A方法调用B方法时,B方法却抛出了异常。那A方法继续抛出原有的异常还是抛出一个新异常呢?
            抛出原有的异常
                   A方法与B方法进行了关联,不便于代码的修改和扩展
            抛出新的异常
                   异常链创建了新的异常但却保留了原有异常的信息

10.异常处理原则

异常处理与性能

异常只能用于非正常情况

不要将过于庞大的代码块放在try中

在catch中指定具体的异常类型

需要对捕获的异常做处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值