您的位置:首页 > 编程语言 > Java开发

Java常用的输出调试技巧

2017-02-27 00:50 411 查看
--------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 staticvoid 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 staticvoid 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 staticvoid main(String[] args) {

//新建一个数组
ints,容量为 5

int[] ints=newint[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 staticvoid main(String[] args) {

//新建一个数组
ints,容量为 5

int[] ints=newint[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 staticvoid main(String[] args) {

//新建一个数组
ints,容量为 5

int[] ints=newint[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】
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: