--------siwuxie095

 
 

 
 

 
 

 
 

Eclipse 开发中常用的输出调试技巧:

 
 

先在左侧的
Package Explorer,右键->New->Java Projects,

命名为
Debug,其他参数默认

 
 

 
 

 
 

 
 

点击 Finish,在 src 上,右键->New->Package,命名为 control

〔编程时最好将每一个类都创建一个包,即便是很简单的包名,这是一个好习惯〕

 
 

 
 

 
 

 
 

 
 

点击 Finish,自动生成了一个 package-info.java,可以删掉

 
 

 
 

 
 

 
 

 
 

在 control 上,右键->New->class,命名为 DebugTest,

勾选上 public static void main(String[] args),自动创建

一个主方法,点击
Finish 完成

 
 

 
 

 
 

 
 

最常用的输出
System.out.println();

可以使用快捷键 syso,输入 syso,回车即可

〔会出提示〕

 
 

 
 

 
 

 
 

这个输出函数支持的类型非常多,如:字符串、数字、布尔…甚至是很多看起来

不可思议的对象类型

 
 

package control;

 
 

import javax.swing.JFrame;

 
 

public class DebugTest {

 
 

public static
void main(String[] args) {

System.out.println(123456);

System.out.println(true);

System.out.println("this is string debug info");

 

//输出一个窗体
这里的 println() 可以接收任何的类型
传入值是一个 Object

//即
只要是一个对象,就可以将它输出

//这里所有的对象都是调用它的 toString() 方法

//输出:JFrame() 的默认的 toString() 方法

System.out.println(new JFrame());

}

 
 

}

 
 

 
 

Eclipse中:

 
 

 
 

 
 

println() 也可以接收传入值为 Object 的任何类型

 
 

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

如果将
JFrame() 复写一下,复写其 toString() 方法:

 
 

package control;

 
 

import javax.swing.JFrame;

 
 

public class DebugTest {

 
 

public static
void main(String[] args) {

System.out.println(123456);

System.out.println(true);

System.out.println("this is string debug info");

 

//输出一个窗体
这里的 println() 可以接收任何的类型
传入值是一个 Object

//即
只要是一个对象,就可以将它输出

//这里所有的对象都是调用它的 toString() 方法

//输出:JFrame() 的默认的 toString() 方法

System.out.println(new JFrame(){

@Override

public String toString() {

 

return
"This is a JFrame";

}

});

}

}

 
 

 
 

Eclipse中:

 
 

 
 

 
 

运行一览:输出自定义
toString() 方法给出的返回值

 
 

 
 

 
 

 
 

在实际应用中,需要使用不同颜色对输出信息进行区分

黑色:System.out.println();

『快捷键:syso』

红色:System.err.println();

『快捷键:syse / syser / syserr』

〔err 即 错误,一般用于输出错误信息〕

 
 

 
 

 
 

 
 

 
 

 
 

再如:

 
 

package control;

 
 

 
 

 
 

public class DebugTest {

 
 

public static
void main(String[] args) {

int[] ints=new
int[5];

//for循环
对 ints 数组逐个赋值

for (int i = 0; i < ints.length; i++) {

ints[i]=i+1;

//输出 i+1

System.out.println(i+1);

}

}

}

 
 

 
 

Eclipse中:

 
 

 
 

 
 

运行一览:

 
 

 
 

 
 

 
 

如果程序中出现错误,如:上面的循环次数是根据
ints.length 来判断,

如果强制改为 6,数组在访问时就会抛出数组越界异常,使用
Try/catch

Block 包裹整个 for循环

〔选中整个
for循环,右键->Surround With->Try/catch Block〕

 
 

 
 

代码:

 
 

package control;

 
 

 
 

 
 

public class DebugTest {

 
 

public static
void main(String[] args) {

int[] ints=new
int[5];

 

try {

//for循环
对 ints 数组逐个赋值

for (int i = 0; i < 6; i++) {

ints[i]=i+1;

//输出 i+1

System.out.println(i+1);

}

} catch (Exception e) {

//e.printStackTrace();

 

//已知错误为
数组越界,直接表明

System.err.println("数组越界!");

}

}

}

 
 

运行一览:

(注意:这里应用了配色方案,所以颜色不是纯正的黑色和红色,

但也能区分出不同)

 
 

 
 

 
 

 
 

 
 

调试非常重要的一个技巧就是
下断点

 
 

如:需要让程序每次输出
i+1 前都暂停,可以在 System.out.println(i+1);

对应的行号上,双击(取消断点,再在对应行号上双击即可)

 
 

 
 

 
 

接下来运行时就是调试,而不是直接运行了,点击
调试
按钮

进入
调试模式,点击
Yes 即可

〔调试
Debug 快捷键:F11,运行 Run 快捷键:Ctrl+F11〕

 
 

(Debug 按钮 的右边是 Run)

 
 

 
 

 
 

 
 

 
 

进入调试模式:每次暂停后,都点击
Resume 按钮继续运行,或使用快捷键 F8

 
 

 
 

 
 

 
 

 
 

调试完毕,点击右上角的
Java 按钮,切换回 Java工作空间

(Java 按钮 的右边是 Debug)

 
 

 
 

 
 

 
 

如果取消掉
catch 中 e.printStackTrace(); 前面的注释:

〔其实这是默认生成的一行代码,即
在控制台(或命令行)中打印出所有的错误追踪信息〕

 
 

package control;

 
 

 
 

 
 

public class DebugTest {

 
 

public static
void main(String[] args) {

int[] ints=new
int[5];

 

try {

//for循环
对 ints 数组逐个赋值

for (int i = 0; i < 6; i++) {

ints[i]=i+1;

//输出 i+1

System.out.println(i+1);

}

} catch (Exception e) {

//默认生成的一行代码

//可以在控制台(或命令行)打印出所有的错误追踪信息

e.printStackTrace();

 

//已知错误为
数组越界,直接表明

System.err.println("数组越界!");

}

}

}

 
 

 
 

运行一览:

输出信息为
ArrayIndexOutOfBoundsException,即数组越界异常

最大值是 5,错误行数:14

 
 

 
 

 
 

所以
Try/catch Block 中,自动生成的 e.printStackTrace(); 可以在程序出错时

打印错误追踪列表,据此,就能追踪到最终错误的来源和错误的类型

 
 

 
 

 
 

【made by siwuxie095】

Java常用的输出调试技巧的更多相关文章

  1. Java Spring Boot 一些调试技巧

    配置文件的管理 有的时候我们希望开发环境和测试环境的配置文件放在一起可以快速切换 spring boot 为我们提供了很方便的的选项 在 application.properties 中只需要添加属性 ...

  2. 输出调试技巧 PRINTF()

    #define PRINTF(...) \ do { \ printf( "%d:%s::",__LINE__, __FUNCTION__);\ printf(__VA_ARGS_ ...

  3. CSS 常用的兼容性调试技巧

    1.实现所有浏览器主页居中 Firefox下主页居中代码:.box{margin:0px auto} IE5.5下主页居中代码:body{text-align:center;} 将以上两种代码,合在一 ...

  4. iOS开发之Xcode常用调试技巧总结

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

  5. GDB调试技巧:总结篇

    目录 一 写在开头 1.1 本文内容 二 学习资料 三 常用命令 四 调试技巧 注:原创不易,转载请务必注明原作者和出处,感谢支持! 一 写在开头 1.1 本文内容 总结GDB调试的一些常用命令和调试 ...

  6. java与.net比较学习系列(1) 开发环境和常用调试技巧

    最近因为公司项目要由.net平台转到java平台的原因,之前一直用.net的我不得不开始学习java了,刚开始听到说要转java的时候很抗拒,因为我想专注在.net平台上,不过这样也并不完全是坏事,通 ...

  7. Java常用调试技巧(转)

    调试不仅可以查找到应用程序缺陷所在,还可以解决缺陷.对于Java程序员来说,他们不仅要学会如何在Eclipse里面开发像样的程序,更需要学会如何调试程序.本文介绍了Java程序员必知的10个调试技巧, ...

  8. java系列:《java核心技术 卷1》学习笔记,chapter 11 调试技巧

    11. 6 调试技巧 1)一个不太为人所知却非常有效的技巧是在每个类中放一个main方法,这样就可以对每个类进行单元测试.这个方法可以保留,因为在java虚拟机只调用启动类的main方法. 2)   ...

  9. Xcode 常用调试技巧总结

    NSLog,po命令和普通断点调试相信每个iOS开发者都会,这里就不作介绍了. 一.Memory Graph Xcode8新增:Memory Graph解决闭包引用循环问题 有很多叹号说明就有问题了. ...

随机推荐

  1. 在pixi中使用你的自定义着色器

    通过几天的学习,对openGL.shader有了一个大致的了解. 回到学习的初衷吧,在基于pixi.js重构D3项目的时候,因为精灵层级的问题,我得按照一定的先后顺序将不同类别的精灵添加到场景中去. ...

  2. SharpNodeSettings项目,可配置的数据采集,统一的工业数据网关,OPC UA服务器开发,PLC数据发布到自身内存,redis,opc ua,以及数据可视化开发

    本项目隶属于 HslCommunication 项目的SDK套件,如果不清楚HslCommunication组件的话,可以先了解那个项目,源代码地址:https://github.com/dathli ...

  3. Winform创建解决方案

    Winform的开发工具可以使用VS2005---VS2013,版本在不断升级,VS的功能也越来越强大.本系列文章采用VS2012(以后全称VS)演示. 窗体是winform开发的基础,需要掌握窗体的 ...

  4. Unix网络编程第三版源码编译

    配置: $ cd Unix-Network-Programming/ $ chmod 755 configure $ ./configure 主要的工作是检查系统是否有源码编译所依赖的各种资源(系统版 ...

  5. 第10课 C++中的动态内存分配

    C++中的动态内存分配 C语言是通过库函数来完成动态内存分配的,而C++是通过关键字从语言层面支持的. C语言中的malloc是基于字节来进行内存申请的,C++中是基于类型来进行的. delete加上 ...

  6. 如何解决VC "应用程序无法启动,因为应用程序的并行配置不正确 sxstrace.exe"问题

    引用链接 http://blog.csdn.net/pizi0475/article/details/7790992 应用程序事件日志中: “C:\windows\system32\test.exe” ...

  7. 【java多线程】java的线程池分析

    (一)线程池的拒绝策略 --->拒绝策略的接口java.util.concurrent.RejectedExecutionHandler --->终止策略(默认):java.util.co ...

  8. timescaledb replication 使用

    replication 可以确保系统的ha 以及lb 数据的查询,timesacledb 使用pg 内置的stream replication 进行复制的支持 docker 运行参考 https:// ...

  9. BeagleBoneBlack Linux开发相关链接收藏

    ubuntu挂载vdi文件 官方linux代码地址 官方devicetree代码地址 [转]使用BBB的device tree和cape(重新整理版) iio: input: ti_am335x_ad ...

  10. 【python】FTP客户端

    Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,函数列举如下 ftp登陆连接 from ftplib import FTP #加 ...