JavaSE 异常

69 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

异常

基本介绍

异常:程序在编译或者执行的过程中可能出现的问题,Java 为常见的代码异常都设计一个类来代表。

错误:Error ,程序员无法处理的错误,只能重启系统,比如内存奔溃,JVM 本身的奔溃

Java 中异常继承的根类是:Throwable

 异常的体系:
          Throwable(根类,不是异常类)
       /              \
     Error           Exception(异常,需要研究和处理)
                     /            \
                    编译时异常     RuntimeException(运行时异常)

Exception 异常的分类:

  • 编译时异常:继承自 Exception 的异常或者其子类,编译阶段就会报错
  • 运行时异常:继承自 RuntimeException 的异常或者其子类,编译阶段是不会出错的,在运行阶段出错

处理过程

异常的产生默认的处理过程解析:(自动处理的过程)

  1. 默认会在出现异常的代码那里自动的创建一个异常对象:ArithmeticException(算术异常)
  2. 异常会从方法中出现的点这里抛出给调用者,调用者最终抛出给 JVM 虚拟机
  3. 虚拟机接收到异常对象后,先在控制台直接输出异常栈信息数据
  4. 直接从当前执行的异常点终止当前程序
  5. 后续代码没有机会执行了,因为程序已经死亡
 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);
 }