Java基础-第一节-异常处理
•Java语言将程序运行过程中所发生的不正常严重错误称为异常,对异常的处理称为异常处理。
•它会中断正在运行的程序,正因为如此异常处理是程序设计中一个非常重要的方面,也是程序设计的一大难点。
•Throwable有两个直接子类,Error类和Exception类。
ØError : 指合理的应用程序在执行过程中发生的严重问题。当程序发生这种严重错误时,通常的做法是通知用户并中止程序的执行。
ØException:异常可分为运行时异常(RuntimeException)和检查时异常(CheckedException)两种
1.RuntimeException:运行时异常,即程序运行时抛出的异常。这种异常在写代码时不进行处理,Java源文件也能编译通过。 RuntimeException异常类及其下面的子类均为运行时异常。
2.CheckedException:检查时异常,又称为非运行时异常,这样的异常必须在编程时进行处理,否则就会编译不通过。Exception异常类及其子类(除去RuntimeException异常类及其子类)都是检查时异常。
常见异常
异常名 |
说明 |
Exception |
异常类的根类 |
RuntimeException |
运行时异常类的基类 |
ArithmeticException |
算术错误情形,如以零作除数 |
ArrayIndexOutOfBoundException |
数组大小小于或大于实际的数组大小 |
NullPointerException |
尝试访问 null 对象成员 |
ClassNotFoundException |
不能加载所需的类 |
NumberFormatException |
数字转化格式异常,字符串到 float 转换无效 |
IOException |
I/O 异常的根类 |
FileNotFoundException |
找不到文件 |
SQLException |
数据库访问异常 |
InterruptedException |
线程被中断异常 |
处理异常
•Java中对异常的处理有如下两种方式:
Ø通过try、catch和finally关键字捕获异常;
Ø通过throw或throws关键字抛出异常;
•try…catch…finally异常处理结构中,try语句块是必须的, catch和finally语句块至少出现一个。
•注意:如果try语句块包含的是检查时异常,则在没有通过throws抛出该异常类的情况下,try必须和catch一起使用,当该行代码去掉或注销掉时,catch相应的异常语句块必须去掉,如下代码:
•try语句块中的代码可能会引发多种类型的异常,当引发异常时,会按顺序查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句,其后 catch 语句被忽略。
•在捕获异常的时候,应按照“从小到大”的顺序捕获异常,即先子类后父类。
•Java异常在try/catch块后加入finally块,可以确保无论是否发生异常 finally块中的代码总能被执行。