Eclipse調試”陷阱”

來源:互聯網
上載者:User

調試也有陷阱?

我想是有的, 今天就發現了一個. 如果以後還能發現, 再繼續補充吧

自從今年四月正式寫Java代碼以來, 越來越驚歎於Java的神奇,且不說自動垃圾收集吧, 連她的調試也好像充滿了神秘色彩 (不過,可能我的Java水平太菜了), 居然圈中一個函數, 能得出函數的最終返回結果, 那麼調試器必須具備類似分析指令碼的功能(我用的是Eclipse 2.1.3). 但是這種強大的功能有時候也會幫倒忙.

來看下面這段普通代碼

 

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/*
 * IteratorDebuggingTrap.java 2004-7-1
 *
 *
 * chenxh
 */

/**
 * @author chenxh
 * 2004-7-1
 *
 *
 */
public class IteratorDebuggingTrap {

 public static void main(String[] args) {
  List list = new ArrayList();
  list.add("a");
  list.add("b");
  list.add("c");
  for (Iterator iter = list.iterator(); iter.hasNext();) {
   System.out.println(iter.next());
  }
  
 }
}

 

執行結果

a
b
c
沒什麼異常啊, 但是如果你在

System.out.println(iter.next());

加上斷點, 並圈中iter.next()監視,

結果卻是

b

很奇怪,不是嗎. 仔細觀察不難發現, 其實調試器本身也調用iter.next(),每過一次斷點調用一次疊代子的next(), 結果還是和斷點的多少有關的, 即監視的次數, 如果你在

for (Iterator iter = list.iterator(); iter.hasNext();) {

設定了斷點, 結果回是

c

如果你再把代碼的

 list.add("c");

去掉, 將會很不幸的得到一個執行階段錯誤

java.util.NoSuchElementException

不過這沒什麼好大驚小怪的了,因為我已經清楚了出錯的原因, 不過剛遇到這種情況是也許會很詫異.

注:我用的IDE是Eclipse, 我的java水平有限, 對一些主流的IDE比如JBuilder也都不怎麼熟悉, 不知道像JBuider這樣的工具是否也會出現這樣的小陷阱

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.