Java的异常体系Java.lang.Throwable(Error和Exception)

1.在编译阶段(写代码的时候),或者运行时可能出现的问题,称之为异常。 

Java的异常体系Java.lang.Throwable(Error和Exception)_第1张图片

Error异常那就不是代码的问题了,电脑的问题比如内存不够,

2.为什么要学习异常?        

        认识异常,避免异常的出现。

        我们在开发中,可能无法绝对避免异常,所以还要学习如何处理异常,因为一旦异常出现,程序会死亡的!!

        研究异常,避免异常,处理异常,是体现程序 的健壮性!!

3.异常有几类?

        1.编译时异常:没有继承RuntimeException, 继承了Exception的异常。

        特点:编译阶段就报错,一定要处理,否则代码写不过去

        2.运行时异常:继承了RuntimeException的异常

        特点:写代码的时候不报错,是运行时报错。

        编译时异常是编译时出现的异常,运行时异常是运行时出现的异常

4.编译时异常的处理方式

        1.throws 抛出去,会引起系统死亡

        2.try{}catch(Exception e) { e.printStackTrace()},不会引起系统死亡!

        3.底层外抛,最外层集中捕获处理,上层可以知道底层的执行情况!

实际开发 是被调用者抛 一直抛到最上层 最上层统一处理。表现层集中处理

5.运行时异常的处理方式

        方式一:在最外层调用处集中捕获处理。

        方式二:提前预判,使用if分支排除掉可能出现的异常。(概率不大都是出现bug在调)

6.自定义异常:

        Java的异常体系Java.lang.Throwable(Error和Exception)_第2张图片

            Java的异常体系Java.lang.Throwable(Error和Exception)_第3张图片

切记:别记混了

        throw 抛出异常对象 写在方法中(这个是传报错信息)

        throws 是声明异常 写在方法声明上(这个是抛给上一级处理)

代码演示

/**
 * 继承运行时异常
 */
public class AgeFIFAException extends RuntimeException{

    public AgeFIFAException(){}

    public AgeFIFAException(String message){
        super(message);//将信息数据传递到父亲的父亲属性 message中
    }
}


-----------

package com.itheima.day05.teacher.exception;

/**
 * 继承大异常Exception(包含编译时异常)
 */
public class AgeFIFAException2 extends Exception{

    public AgeFIFAException2(){}

    public AgeFIFAException2(String message){
        super(message);//将信息数据传递到父亲的父亲属性 message中
    }
}

-------------

package com.itheima.day05.teacher.exception;

/*   测试类
    
    需求: 
         设计一个自定义异常类
         继承  RuntimeException
         继承  Exception
    */
public class Test2 {


    public static void main(String[] args)  {
        // 设计一个方法  接收一个参数 参数是一个年龄

        //   如果发现这个年龄 不在 0 -200 之间 我们认为这是一个问题---请将这个问题设计成一个 异常


        try {
            checkAge2(-100);//两种处理方案选择
        } catch (AgeFIFAException2 ageFIFAException2) {
            ageFIFAException2.printStackTrace(); //来自父类 打印详细异常信息  红色的!!
//            System.out.println(ageFIFAException2.getMessage());
            System.out.println("我自己个处理了....");
        }
        //  1: 可以继续 throws .... 继续抛  指的是最终交给JVM处理
         //               JVM 如果发现有异常了 停止程序 并且将问题 展示在控制台
        //  声明异常 在方法声明上 throws 异常类  特点 谁调用谁处理
        //2: 调用进行抓取处理--- try..catch  自己处理 不麻烦JVM

        System.out.println("over");
    }

    public static void checkAge2(int age) throws AgeFIFAException2 {
        if(age>=0 && age<=200){
            System.out.println("年龄是正常,老铁年龄没问题");
        }else{
            //年龄有问题了
            // 异常的 抛出方式  throw 异常(...)
            throw new AgeFIFAException2("年龄不属于正常范围!!");
            // 编译期异常抛出之后 需要进行 处理!!!
            // 两种处理方法
            //  一种 throws  声明异常 告诉别人 哥们这有坑 你调的时候 小心点
            //   位置 方法上  声明出去之后 需要 调用者处理!!
        }
    }
}

        

        

你可能感兴趣的:(java,开发语言)