JavaSE_17_异常处理

《异常处理》

目录

  • 相关概念(掌握)
  • 异常处理方法(精通)
  • 自定义异常(掌握)

一、相关概念

什么是异常?

  • 异常是程序在执行时发生的错误事件,它会打断指令的正常流程;
  • Java中提供了一种独特的异常处理机制,通过异常来处理程序设计中出现的错误;
  • Java异常是一个描述在代码段中发生异常情况(出错)的对象

Java异常分类

  • Error

    Error 是指在正常情况下,不大可能出现的情况,绝大部分的 Error 都会导致程序(比如 JVM 自身)处于非正常的、不可恢复状态。既然是非正常情况,所以不便于也不需要捕获,常见的比如 OutOfMemoryError (内存溢出)之类,都是 Error 的子类。

  • Exception

    Exception 是程序正常运行中,可以预料的意外情况,可能并且应该被捕获,进行相应处理。Exception 又分为可检查(checked)异常和不检查(unchecked)异常,可检查异常在源代码里必须显式地进行捕获处理,这是编译期检查的一部分。

请添加图片描述

二、异常处理方法

案例一(检查性异常)

  1. 创建Test类,书写testException()方法,调用finalize()方法(代码报红线)。

请添加图片描述

  1. Alt+Enter自动提示进行异常处理。

请添加图片描述

  • 方式一:方法throws异常
public void testException() throws Throwable {
    finalize();
}
  • 方式二:try/catch捕获异常
public void testException() {
    try {
        finalize();
    } catch (Throwable throwable) {
        throwable.printStackTrace();
    }
}

案例二(非检查性异常)

  • Test类
package com.hpr.test;

public class Test {
    ...
    public static void main(String[] args) {
        System.out.println(3/0);
        System.out.println("程序执行完毕!");
    }
}

执行结果

请添加图片描述

try…catch…finally…

package com.hpr.test;

public class Test {
    ...
    public static void main(String[] args) {
        try {									//try块中放置可能会发生异常的代码
            System.out.println(3 / 0);
        } catch (ArithmeticException e) {		//catch块指定要捕获的异常类型,并将异常封装为对象e
            e.printStackTrace();				//异常处理:打印异常信息
        } finally {
            System.out.println("资源释放...");	//异常发不发生都会执行,一般做资源释放,防止线程阻塞
        }
        System.out.println("程序执行完毕!");
    }
}

执行结果

请添加图片描述

三、自定义异常

  • CustomException类
package com.hpr.exception;

public class CustomException extends Exception{

    public CustomException() {
    }

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

    public CustomException(String message, Throwable cause) {
        super(message, cause);
    }
}
  • 测试类
package com.hpr.test;

import com.hpr.exception.CustomException;

public class Test {
    
    public static void judgeAge(int age) throws CustomException {
        if (age >= 18 && age <= 60) {
            System.out.println("符合法定用工年龄...");
        } else {
            throw new CustomException("与法定用工年龄不符!");
        }
    }

    public static void main(String[] args) {
        int age = 10;
        try {
            judgeAge(age);
        } catch (CustomException e) {
            e.printStackTrace();
        }
    }
}

执行结果

请添加图片描述

总结

重点

  1. 异常分类;
  2. 异常处理方法;
  3. 自定义异常。

难点

  1. 异常处理方法。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值