溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java程序調試技巧有哪些

發(fā)布時間:2021-11-19 10:49:57 來源:億速云 閱讀:121 作者:小新 欄目:編程語言

小編給大家分享一下Java程序調試技巧有哪些,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

一:一種很簡單的方法就是使用一個boolean量如:debugMode,需要看看程序的輸出時可以使用:if(debugMode)System.out.println("..");

在項目完畢后把debugMode變量設為false;這種方法的不足是:為了啟動或者禁止debug,必須改動代碼

二:一個比上述方法稍好的是:使用Java -D:如:Java -Ddebug=true MyClass,在使用這種方法時,必須在你所有的class中添加System.getProperty("debug")來取得調試標志,這樣***種方法的使用,就改為:

public static final boolean debug;     static{        String sDebug=System.getProperty("debug");        if(sDebug!=null && sDebug.equalsIngnoreCase("true"))           debug=true;        else          debug = false;     }

這樣在不更改source code的情況下可以直接修改Java程序調試標志,但是這樣不夠靈活,比如你不能指定哪一部分使用調試功能,而只是要使用調試功能就必須在代碼的全部使用,這樣就引出了第三種調試方法,可以定義一個用于調試的類。

  public class DebugManager {    public static final String SYSTEM_DEBUG_KEY="system.Debug";   public static final boolean debug;   static {       debug = toBoolean(SYSTEM_DEBUG_KEY);   }   private static boolean toBoolean(String key){    boolean debug;    String sDebug = System.getProperty(key);    if(sDebug != null && sDebug.equalsIgnoreCase("true"))     debug = true;    else    debug =false;    return debug;   }      public static boolean getSystemDebug(){    return debug;   }   public static boolean getSystemDebug(String applicationKey) {    if(debug || toBoolean(applicationKey))     return true;    else    return false;   }  }

這樣對于一個application(Test)可以著牙功能調用:
boolean debug =DebugManager.getSystemDebug(applicationKey);

要打開Test的調試功能,只需:

java -DTest.Debug=true Test

當然這個類可以進行進一步擴展,比如將其變?yōu)槿罩竟芾?,控制調試信息的輸出位置等

三、使用斷言

斷言是Merlin(jdk1.4)中一項新功能,默認情況下不使用斷言,但是programmer可以在任何時候enable或者disable這項功能,從而可以在測試時啟用斷言驗證,而在部署時禁用斷言驗證,而程序運行時若用戶碰到問題時再重新啟用斷言。斷言檢查,失敗時不會拋出

Exception,而是拋出AssertionError,

1,斷言的兩種語法形式:

(1)assert booleanExpression;

(2) assert boolExpression:message; //message將作為錯誤拋出后的結果顯示

assert必須位AssertTest于可執(zhí)行快中,不能將assert和實例的類變量一起使用,但可以將其放在任何方法內(nèi)。

2,在Java程序調試中啟用斷言:

編譯:javac -source 1.4 AssertTest.java

運行:java -ea AssertTest (參數(shù))

-ea是啟用斷言的簡易方法,但是-ea不能用于系統(tǒng)類,

(1)若要對系統(tǒng)類使用斷言:則需:-enablesystemassertions,或者-esa

(2)若要對這個package啟用斷言:要在-ea后加(:,package的名字,...)如對test.util包及其所有的子包啟用斷言,則可以java -ea:test.util... AssertTest

看完了這篇文章,相信你對“Java程序調試技巧有哪些”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI