Java常用的輸出調試技巧


--------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) {

//新建一個數組 ints,容量為 5

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) {

//新建一個數組 ints,容量為 5

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) {

//新建一個數組 ints,容量為 5

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】


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM