异常的基本知识

异常机制

Java异常类产生的原因

由开发者通过if-else来解决异常问题

• 代码臃肿:业务代码和异常处理代码放一起

• 程序员要花很大精力"堵漏洞“

• 程序员很难堵住所有“漏洞”,对程序员本身要求比较高

Java提供异常处理机制。

它将异常处理代码和和业务代码分离,使程序更优雅,更好的容错性,高键壮性

过程:

 

异常引入

异常( Exception 也称例外)就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序

• 所需文件找不到

• 网络连接不通或中断

• 算术运算错 (被零除)

• 数组下标越界

• 装载一个不存在的类或者对null对象操作

• 类型转换异常

• ……

当Java程序出现以上的异常时,就会在所处的方法中产生一个异常对象。这个异常对象包括异常的类型,异常出现时程序的运行状态以及对该异常的详细描述

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

 

异常处理

try-catch

• 情况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块中的代码总能被执行

• 无异常 try-finally

• 有异常 try-catch-finally

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

• finally块中语句不执行的唯一情况

• 异常处理代码中执行System.exit(1)退出Java虚拟机

• Finally块的具体执行过程

• 执行try或catch中代码

• 遇到return/throw,先执行finally中语句块

• 执行return/throw

多重catch

• 一段代码可能会引发多种类型的异常

• 当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句

• 执行其中一条 catch 语句后,其后 catch 语句将被忽略

• 在安排catch语句的顺序时,首先应该捕获最特殊的异常, 然后再逐渐一般化,即先子类后父类

 

异常类型

方法名

说明

Exception

异常层次结构的根类

ArithmeticException

算术错误情型,如零除

ArrayIndexOutOfBoundsException

数组下标越界

NullPointerException

尝试访问空对象成员

ClassNotFoundException

不能加载所需要的类

InputMismatchException

欲得到数据类型与实际输入类型不匹配

IllegalArgumentException

方法接受到非法参数

ClassCastException

对象强制类型转换出错误

NumberFormatException

数字格式转换异常,比如把‘ab’转换数字

 

异常分类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值