异常:不正常。
生活中的异常:
例:在上课时,突然间停电,造成上课终止。 处理:等待来电、使用备用发电机。
程序中的异常:
程序在运行的过程,出现了一些突发状况,造成程序无法继续运行。我们把上述的突发状况,无法正常运行的这些状态称为Java中的异常。
Java中的异常:就是程序中出现的错误(bug),或者不正常现象。而我们在开发程序的时候,就需要对这些问题进行预先的判断和处理。
学习Java中的异常,我们需要研究:
1、什么是异常;
2、异常问题怎么去解决和处理;
3、我们自己怎么把问题报告给程序的使用者;
我们编写程序的时候,在程序中肯定会有问题(bug)出现,而sun公司把开发中最最常见的一些问题,进行总结和抽取,形成了一个体系,这个体系就是我们要学习的异常体系。
异常指的并不是语法错误,语法错了,编译不通过,不会产生字节码文件,根本不能运行.
我们书写程序,肯定会有问题的发生,这些问题统称为异常。而sun公司把最常见的一些异常进行类的描述和封装。然后我们如果在程序中遇到了这些问题,就可以直接通过这些描述异常的类进行错误信息的封装。然后把这些信息丢给程序的调用者。
异常的根类是java.lang.Throwable
,Throwable这个类描述的是Java中所有异常和错误的共性内容。其下有两个子类:java.lang.Error
与java.util.Exception
,平常所说的异常指java.util.Exception
。
Throwable体系:
Error:严重错误Error,无法通过处理的错误,只能事先避免,好比绝症。
在程序运行时,会产生一些错误信息。java把这些错误信息使用Error或其子类进行描述。
错误属于系统级别的,是由于JVM在操作内存时(JVM需要借助操作系统来实现内存的操作),出现了一些不正常的操作,造成内存错误,出现错误后操作系统就会把这个错误返回给JVM。
在程序中,遇到错误时,java没有针对性的解决方案,只能通过修改源代码的方式来解决程序中的错误问题。
Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。好比感冒、阑尾炎。
在程序运行时,也会出现一些异常状况。表示Java程序中存在的异常问题,而不是错误问题。这些异常问题,在程序中通过判断等形式是可以检测并且预防的。针对这些异常问题,程序员在写代码的时候一旦发生,必须给出有效的解决方案。
java对于异常状况是有针对性的解决方案(异常处理),例:角标越界、空指针异常等。
异常状况的发生,通常是JVM在操作一些数据时,出现的问题,java对于异常的发生,是可以通过一些手段(捕获)避免程序终止运行,保证让程序继续向下正常执行。
我们平常说的异常就是指Exception,因为这类异常一旦出现,我们就要对代码进行更正,修复程序。
异常(Exception)的分类:根据在编译时期还是运行时期去检查异常?
编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)
运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会让编译器检测(不报错)。(如数学异常)
RuntimeException和Exception有什么区别:
Exception属于编译时异常,编译器在编译时会检测该异常是否异常的处理方案 ,如果没有处理方案,编译不能通过。
RuntimeException属于运行时异常,编译器不会检测该异常是否有异常的处理方案,不需要声明。
说明:在Exception的所有子类异常中,只有RuntimeException不是编译异常,是运行时异常,其他子类都是编译异常。