`
zjlinkpro
  • 浏览: 49979 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

从代码的角度去调试代码

阅读更多

代码角度:
---------------------------------------------------------------------------------------------------------------------------------
1.level 1)观察变量的变化,在你感觉变量的值变化有问题时,显示该变量的值;
如:在C++中:  cout  << “value: ” <<  value;
     Java中: System.out.println(“value: ” +value);
---------------------------------------------------------------------------------------------------------------------------------
2.level 2assertion(断言)
1)理解
   因为Assertion是一种假设,所以它的结果就只有两种(truefalse);
   在代码最容易出错的地方设置Assertion,就好比在某个地方加了个监控器,当发生异常的时候,会发出警报;
2)具体使用
C++中:
#include<cassert>
int main()
{
bool isTrue = false;
assert(isTrue);
return 0;
}

 

Java中:

有两种表示:

1)assert  Expression1

public class test {
public static void main(String[] args) {
boolean isOpen = false;
assert isOpen == true; // 提示变量值有问题
System.out.println(isOpen);
}
}

 

 

2) assert Expression1 : Expression2
public class test {
public static void main(String[] args) {
boolean isOpen = false;
try{
// if (isOpen == true)为真,不进行处理;反之,进行捕获(输出“wrong”)
assert isOpen == true : "wrong";
System.out.println(isOpen);
}catch(AssertionError err){
System.out.println(err.getMessage());
}
}
}
------------------------------------------------------------------------------------------------------------------------- 

3)assertion开启决定方式
     i)  在C++中里面,编译时决定是否开启assertion。我们见到的c++工程有两个版本(debug版本和release版本)

         其中,debug版本中是有assertion,而release版本没有;
     ii) 在Java中里面,运行时决定是否开启assertion。这里会带来一定的开销,但在版本管理中,有优势;

         开启方式:Run ---> Run... ---> 选择 Arguments 选项卡, VM arguments 文本框中输入: -ea  
         注意: 中间没有空格,如果输入 -da 表示禁止断言。

----------------------------------------------------------------------------------------------------------------------------------------

参考网址:
    1.java assert初步使用
     2.MicroFish
     3.网络学院


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics