idea 调试java技巧_IDEA 调试Java代码的两个技巧

IDEA 调试Java代码的两个技巧

??本文介绍两个使用IDEA 调试Java代码的两个技巧:

修改变量值

使用RuntimeException终止代码执行

修改变量值

??在Java代码调试过程中,我们可以修改变量值,使其达到走指定分支的目的,或者使其满足某个条件。我们以给变量beanName赋值为例,说明如何修改变量值。示例代码如下:

public static void main(String[] args) {

String beanName = "矩形画图工具";

System.out.println("第一次打印:" + beanName);

System.out.println("第二次打印:" + beanName);//①

System.out.println("do something");

}

??在①所在行打断点后以debug模式运行main函数,进入变量视图Variables,然后选择变量beanName,再右键单击变量选中Set Value(见图1),就可以在变量视图页面根据变量类型修改变量值,我这里输入“我是Wiener”,覆盖其原始值“矩形画图工具”(见图2)。

图1

图2

??放开断点后,控制台打印结果如下,说明变量值被成功修改。

第一次打印:矩形画图工具

第二次打印:我是Wiener

do something

使用RuntimeException终止代码执行

??对上述测试代码稍加改造,加入一个RuntimeException异常:

public static void main(String[] args) {

String beanName = "矩形画图工具";

System.out.println("第一次打印:" + beanName);

if (true) {

throw new RuntimeException("测试,终止代码 --------------");

}

System.out.println("第二次打印:" + beanName);

System.out.println("do something");

}

??控制台打印结果如下:

第一次打印:矩形画图工具

Exception in thread "main" java.lang.RuntimeException: 测试,终止代码 --------------

at com.eg.wiener.controller.UserController.main(UserController.java:68)

??由此可见,在抛出RuntimeException异常后,其后面的业务逻辑不再执行;如果在事务中抛出,则整个事务被回滚。这对于调试涉及大量保存和更新操作的代码非常有用,允许你反复执行,并且数据库中不产生脏数据。例如客户下单过程中,要查询客户是否付款,付款后才把订单状态改为已支付,然后告知客户出单成功,并通知仓库发货;假如在下单过程中抛出了一个莫名其妙的异常,那么,我们就可以在代码中根据调试结果,在多个地方从前向后放入RuntimeException,直到定位到异常根源。

IDEA 调试Java代码的两个技巧 相关文章

Java 链表(一)

链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 小结: 1、链表是以节点的方式来存储,是链式存储。 2、每个节点包含 data 域, next 域:指向下一个节点。 3、如图:发现链表的各个节点不一定是连续存储。 4、链表分带头节点的链表和没有

Android主流框架——Rxjava(原理分析)

基本接口定义 package com.example.rxjavapractice.my.rxjavaimport io.reactivex.functions.Functionpublic abstract class ObservableT { companion object { /** * 创建:将传递进来的参数教给ObservableCreate管理 */ public fun T create( observableOn

JDBC—基础

基本概念 Java DataBase Connectivity java 数据库连接,用java语言操作数据库。 本质:官方定义的一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,提供数据库驱动jar包,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动ja

全网最全java Springboot对接微信公众号开发平台(可能是最全)!

微信服务接入教程文档 目录 微信服务接入教程文档 微信开发技术文档官网 注册成为微信开发者 配置接受推送消息服务器 natapp下载,使用 后台构建 后台配置微信推送消息服务器 接受消息推送 操作对象,获取请求类型(比如文本、图片等)进行相应的处理,进行

Android主流框架——Rxjava (操作符与使用)

创建型操作符 package com.example.rxjavapractice.operatorsimport io.reactivex.Observableimport io.reactivex.Observerimport io.reactivex.disposables.Disposableimport io.reactivex.functions.Consumerfun just() { // TODO 无需自己发射,创建即发

Java高并发21-AQS在共享,独占场景下的源码介绍

一、AQS--锁的底层支持 1.AQS是什么 AQS是AbstractQueuedSychronizer的简称,即抽象同步队列的简称,这是实现同步器的重要组件,是一个抽象类,虽然在实际工作中很烧用到它,但是了解它的内部原理是很有必要的,并法包中锁的底层就是使用该抽象类实现的,下

Java-JDBC-事务与设置回滚点

Java-JDBC-事务与设置回滚点 事务能够保证SQL要么全部执行成功,要么全部执行失败 JDBC 默认是自动提交事务 每条DML都是默认提交事务的,多个preparedStatement.executeUpdate();都会提交一次事务 如果想手动控制事务,那么就不能让事务自动提交 通过Connection

完整的后端开发流程-深入浅出Java线程池:使用篇

深入浅出Java线程池:使用篇 完整的后端开发流程 手动步骤走一种完整的后端开发流程 服务端 1、将远程仓库的jar包拷贝到本地仓库 2、将项目代码拷贝到本地并建立路径能够执行编译 3、编译打包项目(package)至项目下,项目跑起来后进行本地测试 4、版本稳定后

ES6 - Map数据结构

JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。这给它的使用带来了很大的限制。 1 const data = {};2 const element = document.getElementById('myDiv');3 4 data[element] = 'metadata';5 data['[objec

Java网络编程

一、网络编程三要素 1、IP地址 设备在网络中的地址,是唯一标识 2、端口 应用程序在设备中的唯一标识 3、协议 数据在网络中传输的规则,常见的协议有UDP协议和TCP协议 二、IP地址 1、含义 IP地址,全称为 Internet Protocol Address ,网络协议地址。是分配

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值