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 ,网络协议地址。是分配