小编给大家分享一下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
当然这个类可以进行进一步扩展,比如将其变为日志管理,控制调试信息的输出位置等
三、使用断言
断言是Merlin(jdk1.4)中一项新功能,默认情况下不使用断言,但是programmer可以在任何时候enable或者disable这项功能,从而可以在测试时启用断言验证,而在部署时禁用断言验证,而程序运行时若用户碰到问题时再重新启用断言。断言检查,失败时不会抛出
Exception,而是抛出AssertionError,
1,断言的两种语法形式:
(1)assert booleanExpression;
(2) assert boolExpression:message; //message将作为错误抛出后的结果显示
assert必须位AssertTest于可执行快中,不能将assert和实例的类变量一起使用,但可以将其放在任何方法内。
2,在Java程序调试中启用断言:
编译:javac -source 1.4 AssertTest.java
运行:java -ea AssertTest (参数)
-ea是启用断言的简易方法,但是-ea不能用于系统类,
(1)若要对系统类使用断言:则需:-enablesystemassertions,或者-esa
(2)若要对这个package启用断言:要在-ea后加(:,package的名字,...)如对test.util包及其所有的子包启用断言,则可以java -ea:test.util... AssertTest
看完了这篇文章,相信你对“Java程序调试技巧有哪些”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。