--------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,回车即可
〔会出提示〕
这个输出函数支持的类型非常多,如:字符串、数字、布尔…甚至是很多看起来
不可思议的对象类型
packagecontrol;
importjavax.swing.JFrame;
public classDebugTest {
public staticvoidmain(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(newJFrame());
}
}
Eclipse中:
println() 也可以接收传入值为 Object 的任何类型
运行一览:
如果将
JFrame() 复写一下,复写其 toString() 方法:
packagecontrol;
importjavax.swing.JFrame;
public classDebugTest {
public staticvoidmain(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(newJFrame(){
@Override
publicString toString() {
return"This is a JFrame";
}
});
}
}
Eclipse中:
运行一览:输出自定义
toString() 方法给出的返回值
在实际应用中,需要使用不同颜色对输出信息进行区分
黑色:System.out.println();『快捷键:syso』
红色:System.err.println();『快捷键:syse/syser /syserr』
〔err 即 错误,一般用于输出错误信息〕
再如:
packagecontrol;
public classDebugTest {
public staticvoidmain(String[] args) {
//新建一个数组ints,容量为5
int[] ints=newint[5];
//for循环对ints数组逐个赋值
for(inti = 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〕
代码:
packagecontrol;
public classDebugTest {
public staticvoidmain(String[] args) {
//新建一个数组ints,容量为5
int[] ints=newint[5];
try{
//for循环对ints数组逐个赋值
for(inti = 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(); 前面的注释:
〔其实这是默认生成的一行代码,即
在控制台(或命令行)中打印出所有的错误追踪信息〕
packagecontrol;
public classDebugTest {
public staticvoidmain(String[] args) {
//新建一个数组ints,容量为5
int[] ints=newint[5];
try{
//for循环对ints数组逐个赋值
for(inti = 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】