异常
基本介绍
异常:程序在编译或者执行的过程中可能出现的问题,Java 为常见的代码异常都设计一个类来代表。
错误:Error ,程序员无法处理的错误,只能重启系统,比如内存奔溃,JVM 本身的奔溃
Java 中异常继承的根类是:Throwable
异常的体系: Throwable(根类,不是异常类) / \ Error Exception(异常,需要研究和处理) / \ 编译时异常 RuntimeException(运行时异常)
Exception 异常的分类:
- 编译时异常:继承自 Exception 的异常或者其子类,编译阶段就会报错
- 运行时异常:继承自 RuntimeException 的异常或者其子类,编译阶段是不会出错的,在运行阶段出错
处理过程
异常的产生默认的处理过程解析:(自动处理的过程)
- 默认会在出现异常的代码那里自动的创建一个异常对象:ArithmeticException(算术异常)
- 异常会从方法中出现的点这里抛出给调用者,调用者最终抛出给 JVM 虚拟机
- 虚拟机接收到异常对象后,先在控制台直接输出异常栈信息数据
- 直接从当前执行的异常点终止当前程序
- 后续代码没有机会执行了,因为程序已经死亡
public class ExceptionDemo { public static void main(String[] args) { System.out.println("程序开始。。。。。。。。。。"); chu( 10 ,0 ); System.out.println("程序结束。。。。。。。。。。");//不执行 } public static void chu(int a , int b){ int c = a / b ;// 出现了运行时异常,自动创建异常对象:ArithmeticException System.out.println("结果是:"+c); } }
编译异常
基本介绍
编译时异常:继承自 Exception 的异常或者其子类,没有继承 RuntimeException,编译时异常是编译阶段就会报错
编译时异常的作用是什么:在编译阶段就爆出一个错误,目的在于提醒,请检查并注意不要出 BUG
public static void main(String[] args) throws ParseException { String date = "2015-01-12 10:23:21"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date d = sdf.parse(date); System.out.println(d); }