--------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】