异常的分类
java.lang.Exception类是所有异常的超类,主要分为以下两种:
- RuntimeException - 运行时异常,也叫作非检测性异常
- IOException和其它异常 - 其它异常,也叫作检测性异常,所谓检测性异常就是指在编译阶段都能
被编译器检测出来的异常。
- 其中RuntimeException类的主要子类:
- ArithmeticException类 - 算术异常
- ArrayIndexOutOfBoundsException类 - 数组下标越界异常
- NullPointerException - 空指针异常
- ClassCastException - 类型转换异常
- NumberFormatException - 数字格式异常
注意:
当程序执行过程中发生异常但又没有手动处理时,则由Java虚拟机采用默认方式处理异常,而默认
处理方式就是:打印异常的名称、异常发生的原因、异常发生的位置以及终止程序。
- ArithmeticException算术异常
- ArrayIndexOutOfBoundsException类 - 数组下标越界异常
- NullPointerException - 空指针异常
- ClassCastException - 类型转换异常
- NumberFormatException - 数字格式异常
异常就像感冒,需要去预防。
**
但是在以后的开发中尽量使用if条件判断来避免异常的发生。
但是过多的if条件判断会导致程序的代码加长、臃肿,可读性差。
异常的捕获
**语法格式**
**try {**
** 编写可能发生异常的代码; **
**}**
**catch(异常类型 引用变量名) {**
** 编写针对该类异常的处理代码;**
**}**
**...**
**fifinally {**
** 编写无论是否发生异常都要执行的代码;**
**}**
异常捕获的运行流程
//没有异常情况下的打印
运行结果:
有异常情况的运行流程
在程序执行过程中发生异常,而且没有手动处理空指针异常的执行流程,空指针导致正序结束。
当程序执行过程中发生异常并且手动处理空指针异常的执行流程。
手动处理异常和没有处理的区别:代码是否可以继续向下执行。
日常工作中,对于异常的出现则是弹出窗口进行提示连续管理员处理。
Exception是错误的总类,类似于Objiect类的作用。是开发过程中的懒人写法。**
异常捕获时的注意事项
注意事项
a.``当需要编写多个``catch``分支时,切记小类型应该放在大类型的前面;
b.``懒人的写法:
catch(Exception e) {}
c.fifinally``通常用于进行善后处理,如:关闭已经打开的文件等。
执行流程
try {
a;
b; - ``可能发生异常的语句
c;
}catch(Exception ex) {
d;
}fifinally {
e;
}
``当没有发生异常时的执行流程:``a b c e;
`<br />
当发生异常时的执行流程:`a b d e;
Finaily的用法
在没有异常的情况下,执行流程和执行结果。
在有异常情况时的输出结果。
由此可见,无论是否有异常,finaily类里的执行语句都是会打印的。