我是靠谱客的博主 激动蜜粉,最近开发中收集的这篇文章主要介绍2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常)

一、编译时异常的处理机制

编译时异常的处理有三种:
1、出现异常直接抛出去给调用者,调用者也继续抛出去
2、出现异常自己捕获处理,不麻烦别人
3、前两者的结合,出现异常直接抛出去给调用者,调用者捕获处理

二、异常处理方式一:throws
1、throws:用在方法上,可以将方法内部出现的异常抛出去给本方法的调用者处理
方式并不好,发送异常的方法自己不处理异常,如果异常最终抛出去给虚拟机将引起程序死亡
格式:

方法 throws 异常1,异常2...{}

throws异常可以抛出很多个,所以不建议使用,建议将上面的异常改为下面的格式

方法throws Exception{}

Exception为最高级的,所以定义一个就可以了

三、异常处理方式二:try-catch
1、监视捕获异常,用在方法内部,可以将方法内部出现的异常直接捕获处理
发送异常的方法自己独立完成异常的处理,程序可以继续往下执行

官方建议格式

try{
	
}catch(Exception e){
	e.printStackTrace(); // 打印异常信息
}

Exception可以捕获一切异常类型

四、异常处理方式3:前两者的集合【理论上最好的】
1、方法直接将异常通过throws抛出去给调用者
2、调用者收到异常后直接处理,而不是像方式一一样再抛出去
调用者接收异常使用try-catch处理

五、运行时异常处理
建议在最外层调用处集中捕获异常处理

示例代码

package com.zcl.d3_execption_handle;

import java.util.Scanner;

public class Demo {
    public static void main(String[] args) {
        Scanner s = new Scanner(System.in);
        while (true){
            // 通过try来捕获异常
            try {
                System.out.println("请输入一个合法的价格:");
                String s1 = s.nextLine(); // 接收一整行输入内容
                // 将输入的内容转换成double类型
                Double aDouble = Double.valueOf(s1);
                // 判断价格是否大于0
                if(aDouble > 0){
                    System.out.println("定价:"+aDouble);
                }else {
                    System.out.println("请输入一个合法的价格");
                }
            } catch (NumberFormatException e) {
                System.out.println("请输入没有毛病的价格");
            }
        }
    }
}

六、自定义异常

编译时异常
1、定义一个异常类继承Exception
2、重写构造器
3、在出现异常的地方用throw new 自定义对象抛出
作用:编译时异常是编译阶段就会报错,提醒更加强烈,一定需要处理
编译时异常示例代码

定义一个异常类

package com.zcl.d3_execption_handle;
/*
    自定义编译时异常
    1、继承Exception
    2、重写构造器
 */
public class AgeIlleagalException extends Exception{
    public AgeIlleagalException() {
    }

    public AgeIlleagalException(String message) {
        super(message);
    }
}

调用编译异常示例代码

package com.zcl.d3_execption_handle;

public class Test {
    public static void main(String[] args) {
        try {
            checkAge(-15);
        } catch (AgeIlleagalException e) {
            e.printStackTrace();
        }
    }

    // 定义一个方法
    public static void checkAge(int age) throws AgeIlleagalException {
        // 判断年龄异常
        if(age<0||age>120){
            // 抛出去一个异常给调用者
            /*
                throw:在方法内部直接创建一个异常对象,并从此抛出异常
                throws:用作方法中声明上的,抛处方法内部的异常
             */
            throw new AgeIlleagalException(age+" is illeagel!");
        }else {
            System.out.println("年龄合法推荐商品");
        }
    }
}

异常输出结果
在这里插入图片描述

自定义运行时异常

1、定义一个异常类继承RuntimeException
2、重写构造器
3、在出现异常的地方用 throw new 自定义对象抛出
作用:提醒不强烈,编译阶段不报错,运行时才可能出现

异常类示例代码

package com.zcl.d3_execption_handle;
/*
    自定义编译时异常
    1、继承Exception
    2、重写构造器
 */
public class AgeIlleagalRuntimeException extends RuntimeException{
    public AgeIlleagalRuntimeException() {
    }

    public AgeIlleagalRuntimeException(String message) {
        super(message);
    }
}

测试实例代码

package com.zcl.d3_execption_handle;

public class Test {
    public static void main(String[] args) {
        checkAge(-15);
    }

    // 定义一个方法
    public static void checkAge(int age){
        // 判断年龄异常
        if(age<0||age>120){
            // 抛出去一个异常给调用者
            /*
                throw:在方法内部直接创建一个异常对象,并从此抛出异常
                throws:用作方法中声明上的,抛处方法内部的异常
             */
            // throw new AgeIlleagalException(age+" is illeagel!");
            throw new AgeIlleagalRuntimeException(age+" is illeagel!");
        }else {
            System.out.println("年龄合法推荐商品");
        }
    }
}

最后

以上就是激动蜜粉为你收集整理的2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常)的全部内容,希望文章能够帮你解决2022Java学习笔记七十四(异常处理:编译时异常的处理机制、异常处理方式、运行时异常处理、自定义异常)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部