前面咱们说到有关于API的学习,可是软件程序在运行过程当中并非会很是完美的,好比当咱们写某个模块,用户的输入不必定符合要求,程序可能不存在或者是文件格式不对等等。因此接下来咱们将要学习java的异常捕捉机制。java
软件程序在运行时,常常会遇到各类各样的问题,咱们将其称之为异常:Exception,也就是例外的意思。那么咱们怎么样才能使编写的程序安全的退出而不至于程序崩溃呢?咱们先来看看用if语句处理程序的原始方案。程序员
public class TestException0 { public static void main(String[] args) { //将d:/a.txt复制到e:/a.txt if("d:/a.txt"这个文件存在){ if(e盘的空间大于a.txt文件长度){ if(文件复制一半IO流断掉){ 中止copy,输出:IO流出问题! }else{ copyFile("d:/a.txt","e:/a.txt"); } }else{ System.out.println("e盘空间不够存放a.txt!"); } }else{ System.out.println("a.txt不存在!"); } } }
逻辑代码与处理代码存放在一块儿,使得程序员本人找不到正确的执行代码;并且用原始if处理,就要求程序员自己对例外的错误状况十分了解,对程序员的要求十分高。web
那么咱们怎么样去应对异常状况呢?JAVA的异常机制就给咱们提供了一些方便的处理方式。假如咱们使用JAVA的异常机制来处理的话能够相似以下:数组
try { copyFile("d:/a.txt","e:/a.txt"); } catch (Exception e) { e.printStackTrace(); }
上面所提到的异常,咱们能够直接用try-catch
将其包起来,JAVA的异常咱们能够交给try异常块给包起来,当咱们遇到程序异常时咱们直接交给系统处理,直接catch一下。安全
咱们将JAVA异常机制的本质能够理解为当程序出现错误或异常时,程序可以安全退出的机制。svg
异常指程序运行过程当中出现的非正常现象,例如用户输入错误、除数为零、须要处理的文件不存在、数组下标越界等。学习
在Java的异常处理机制中,引进了不少用来描述和处理异常的类,称为异常类。
异常类定义中包含了该类异常的信息和对异常进行处理的方法。
所谓异常处理,就是指程序在出现问题时依然能够正确的执行完。
咱们开始看咱们的第一个异常对象,并分析一下异常机制是如何工做的。spa
public class TestException1 { public static void main(String[] args) { int i=1/0; //除数为0 System.out.println(i);//输出 } }
执行结果以下所示:
咱们能够看到,系统提示0不能做除数,当程序跑到异常处时会生成一个”ArithmeticException
“异常对象,而后抛给咱们的JRE,再由JRE做处理将程序给中止掉,最后提示并打印相关的异常信息,让咱们去想办法处理异常。.net
JDK 中定义了不少异常类,这些类对应了各类各样可能出现的异常事件,全部异常对象都是派生于Throwable
类的一个实例。若是内置的异常类不可以知足须要,还能够建立本身的异常类。3d
Java对异常进行了分类,不一样类型的异常分别用不一样的Java类表示,全部异常的根类为java.lang.Throwable
,Throwable下面又派生了两个子类:Error
和Exception
。Java异常类的层次结构以下所示。
对于Error来讲,咱们只有重启虚拟机了,这个没法处理的是不须要再去处理异常了。
而对于Exception来说,是咱们本次须要学习的异常,在这之下还分为两大类:Checked Exception
和RuntimeException
(Unchecked Exception
),须要检查的异常和不须要检查的异常(运行时会抛出,通常为逻辑错误)
此张图为异常的基本分类,比较重要,要牢记!下一篇咱们来展开讲解异常的分类!
未完待续~