java中Debug调试、异常的概念、异常体系、处理异常的关键字try/catch/finally/throw/throws、多个异常使用捕获并处理的方式、继承关系中处理异常、自定义异常类

Debug调试

bug指程序当中遇到的一些错误异常,Debug指调试bug,找到bug对其解决;debug可以让代码逐行执行,查看代码执行的过程,调试程序中出现的bug或异常。

public class DebugClass {
   
   
    public static void main(String[] args) {
   
   
        // 鼠标单击行号的右边可以打断点,打完断点后,鼠标右击弹框选择调试Debug,点击完Debug后程序就停留在断点的第一行,此时需要点击控制台箭头进行调试,其中各个按钮的意思:
        // F8: 每点击一次,执行一步
        // F7: 进入到方法中
        // shift + F8:跳出方法
        // Ctrl + F5: 重新执行debug调试
        // Ctrl + shift + F5:退出debug调试模式
        int a = 1;
        int b = 2;
        int c = a + b;
        System.out.println(c); // 3
    }
}

异常的概念:

在程序中,异常指程序在执行过程中,出现的非正常的情况,会导致jvm的非正常停止。

在java中异常本身就是一个类,产生异常就是创建异常对象并抛出一个异常对象。java处理异常的方式是中断处理。

异常不是语法错误,语法错误编译不通过。

异常体系:

异常机制其实是帮助我们找到程序中的问题,异常的根类是:java.lang.Throwable,其下有两个子类:java.lang.Error(不能被处理)与java.lang.Exception(异常,处理后程序可以继续执行 )

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

// Throwable类:是java语言中所有错误或异常的超类
// Exception: 编译期异常(写代码时就会报的异常),它下面有个类:RuntimeException:运行期异常,指java程序运行过程中出现的问题。我们把异常处理掉程序可以继续运行。
// Error: 错误:一个程序不被允许的错误,想要程序运行,就必须得解决掉这个错误。
public class ExceptionClass {
   
   
    public static void main(String[] args) /*throws ParseException*/ {
   
   
        // 一、异常处理:
        // 把字符串格式的日期解析为Date的日期;parse这个方法本身会抛异常,需要处理,这里有两种处理方式:
        // 1.选中parse后Alt+回车,选择添加异常方法签名,此时main方法后面会新增throws ParseException将异常抛出,交给虚拟机处理
        // 2.选中parse后Alt+回车,选中带有try/catch的一项,处理后程序可以正常执行。
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        try {
   
   
            // try中写可能出现异常的代码,运行期间报错也不会导致程序停止。
            Date dt = sd.parse("2000-12-12");
        } catch (ParseException e) {
   
   
            throw new RuntimeException(e);
        }

        // 二、错误处理:
        int[] arr = new int[100000000];
        // int[] arr2 = new int[100000000000]; // 过大的整数: 100000000000,超出int范围报错

        // 三、异常过程的解析:异常的产生过程解析(分析异常的怎么产生,如何处理异常),见下面数组索引越界异常图:
    }
}

数组索引越界异常如:
请添加图片描述
处理异常:

java中处理异常会用到这几个关键字:try、catch、finally、throw、throws

throw 抛出异常:

import java.util.Objects;

// throw: 将指定的异常在指定的方法中抛出,使用格式:throw new xxxException()
// 注意:1.throw关键字必须写在方法的内部 2.后面new对象必须是Exception或者Exception的子类对象
// 3.抛出指定的异常对象后,需要对异常对象处理(方式一:throw关键字创建的是RuntimeException或者是RuntimeException的子类时,可以不处理,默认给jvm处理;方式二:如果创建的是编译异常,那么必须通过throws或try/catch处理)
public class ThrowClass {
   
   
    public static void main(String[] args) {
   
   
        // 调用方法测试:
        int[] arr1 = new int[]{
   
   1,2,3};
        System.out.println(arr1[1]); // 2
        System.out.println(arr1[3]); // ArrayIndexOutOfBoundsException属于运行期异常,无需处理

        int[] arr2 = null;
        System.out.println(arr2[1]); // NullPointerException属于运行期异常,无需处理
    }
    // 定义一个获取数据元素的方法:
    public static int getArrayElement(int[] arr, int index) {
   
   
        if (arr == null) {
   
   
            throw new NullPointerException("数组不能为空!");
        }
        // java中Objects对象有一个静态方法,可以对对象是否为空进行判断
        Objects.requireNonNull(arr);
        Objects.requireNonNull(arr, "数组不能为空!"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦海123

快乐每一天!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值