解析java中的debug模式之异常断点调试

解析java中的debug模式之异常断点调试

1 原理

停顿发生异常的代码行,图标为小闪电,默认不显示,只有停顿在异常所在代码行(该代码并未执行)才显示

2 使用步骤

2.1 打开断点面板

2.1.1 需要点击下方的 View breakPoint按钮

在这里插入图片描述

2.1.2 点击完View breakPointer后的效果图

在这里插入图片描述

2.2 在+号菜单栏下面选择java Exception breakPoints

2.2.1 点击+号

在这里插入图片描述

2.2.2 选择javaException breakPoints()

在这里插入图片描述

2.3 单击后会弹出一个输入框,要你输入你想要异常断点具体是哪个异常

在这里插入图片描述

2.4 输入nullP根据提示选择空指针异常,然后点击ok,此时空指针异常断点就成功打上了

2.4.1 根据提示选择空指针异常

在这里插入图片描述

2.4.1 双击nullpoint后会回到断点菜单,此时发现java Exception BreakPointer下方出现了NullPointerException,此时代表空指针断点成功打上了

在这里插入图片描述

2.5 打完异常断点后,代码行不会有闪电标志

在这里插入图片描述

2.6 开启debug模式之前

在这里插入图片描述

2.7 开启debug模式之后

在这里插入图片描述

2.8 此时你知道了这个地方null有问题,但是你想跳过这个空指针的地方去执行其他的程序代码,该怎么办呢?

2.8.1 找到你需要关闭的方法的线程

在这里插入图片描述

2.8.2 右键单击选择Force Return

在这里插入图片描述

2.8.3 使用强行退出后的效果

在这里插入图片描述

在这里插入图片描述

3 使用场景

有些时候我们可能因为考虑的不够周全,有可能出现null值的传递,这个时候我们需要把经常出现的运行时异常断点给打上,这样debug调试模式运行的时候,会停顿在一旦执行就会出现异常的那一行,此时该行并未执行,然后我们就可以去处理不够周全的位置的业务逻辑了

4 示例代码

Dog类

package Work;
public class Dog {
    private String name;
    //名字
    private String type;
    //类型
    private int age;
    //年龄

    public Dog() {
    }

    public Dog(String name, String type, int age){
        this.name = name;
        this.type = type;
        setAge(age);
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age){
        if(age<0||age>10){
            System.out.println("年龄非法");
        }
        this.age = age;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", type='" + type + '\'' +
                ", age=" + age +
                '}';
    }
}

Person类

package Work;
public class Person {
    private String name;
    //有一个Dog类型的属性
    private Dog dog;

    public Person(String name, Dog dog) {
        this.name = name;
        this.dog = dog;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", dog=" + dog +
                '}';
    }
}

Test05类

package Work;
public class Test05 {
    public static void main(String[] args) {
       //检测传入的引用数据类型里面的具体参数变化
      Person p=new Person("张三",null);
      fn(p);
      System.out.println("是否顺序执行");
    }
    public static void fn(Person p){
        p.getDog().setAge(10);
        System.out.println("加油把!!!勇敢的少年们!!!");
    }
}

5 示例代码debug模式截图

在这里插入图片描述

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在IDEAdebug断点调试是一种调试方法,可以帮助开发人员定位和解决代码的问题。通过设置断点,我们可以在程序执行过程暂停代码的执行,从而可以逐行查看代码的执行情况,检查变量的值以及调用堆栈等信息。在调试过程,IDEA提供了一些常用的调试功能,如方法断点、属性断点、Run to Cursor和Evaluate Expression等。 方法断点是一种在代码设置的断点,当程序执行到该方法时,会暂停代码的执行并跳转到该方法处,方便开发人员对方法进行逐行调试和查看变量的值。 属性断点是另一种常用的断点类型,它允许开发人员在代码设置断点以便在属性值发生变化时暂停代码的执行,从而可以检查属性的变化情况。 Run to Cursor是一种调试命令,可以将调试执行位置直接跳转到光标所在的位置,然后继续调试,只能往后面跳。如果光标在调试执行位置之前,调试会终止。 Evaluate Expression是一种调试功能,允许开发人员在调试过程评估表达式并查看变量的值。通过Evaluate Expression,我们可以在调试期间动态计算和查看变量的值,帮助我们更好地理解代码的执行情况。 综上所述,IDEA的debug断点调试功能可以帮助开发人员定位和解决代码的问题,通过方法断点、属性断点、Run to Cursor和Evaluate Expression等功能,可以更加高效地进行代码调试和问题排查。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Idea断点调试debug)详解](https://blog.csdn.net/m0_54355172/article/details/126715379)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SSS4362

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值