JAVA基础(三):异常

异常

为什么要引入异常?
因为在程序运行的时候,可能会出现数组溢出、文件不存在、除数为0,空指针等异常

常规处理
采用if else 如果有多种异常,就用多个if else嵌套
弊端:实际上只有部分真正执行的代码,其余的都是if-else 判空等操作没有实际意义,导致代码臃肿,出异常的时候要不断调试找出bug的地方。

引入异常
Java提供了异常处理的机制。它可以把异常处理代码和业务代码分离,程序具有好的可读性、容错性和健壮性

在这里插入图片描述

异常处理
1、try-catch
2、finally
3、throw
4、throws

使用方式
在这里插入图片描述

try-catch

语法:

try{
   
	可能发生异常的代码块
}catch(){
   
	异常的处理
}finally{
   
	通常用于资源释放
}

• 情况1:try块中代码没有出现异常
• 不执行catch块代码,执行catch块后边的代码

• 情况2:try块中代码出现异常,catch中异常类型匹配(相同或者父类)
• 执行catch块代码,执行catch块后边的代码

• 情况3:try块中代码出现异常, catch中异常类型不匹配
• 不执行catch块代码,不执行catch块后边的代码,程序会中断运行
• 注意
• 出现异常后,Java会生成相应的异常对象,Java系统,寻找匹配的catch块,找到后将异常对象付给catch块异常参数
• 出现异常后,try块中尚未执行的语句不会执行
• 出现异常后并处理后,catch块后面的语句还会执行

try-catch-finally

在try-catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行

通常在finally中关闭程序块已打开的资源,比如:文件流、释放数据库连接等。

但是并不是finally的代码块一定能被执行,当程序出现System.exit(1)提前退出虚拟机,finally将不被执行

Finally块的具体执行过程
• 执行try或catch中代码
• 遇到return/throw,先执行finally中语句块
• 执行return/throw

多个异常的处理

采用多重catch捕获多种类型的异常,一般执行过程是:
1、当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句
2、执行其中一条 catch 语句后,其后 catch 语句将被忽略
3、在安排catch语句的顺序时,首先应该捕获最特殊的异常, 然后再逐渐一般化,即先子类后父类


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值