2013-04-01 102 views
2

如果這已被其他地方所覆蓋,我會提前道歉,但涉及的含糊/常見術語意味着我發現了大量不相關的命中,並且沒有任何幫助。由於我的項目相當龐大,我不認爲我提供M(N)WE是不合理的,所以我正在尋找關於還有哪些方面需要檢查的想法。這裏的代碼塊:Java構造函數調用被忽略/沒有錯誤拋出

try { 
    myClassObject = new MyClass(string1, string2, string3, otherClassObject); (1) 
    System.out.println("Test"); (2) 
} catch (Exception e){ 
    System.out.println(e.getMessage() + " " + e.getStackTrace()); (3) 
} 

我的構造函數(1)永遠不會被調用。然而,(2)和(3)都不會被調用(即,測試字符串從不被打印,也不會被打印)。從我對try-catch塊的理解來看,這是不可能的。

我使用Eclipse的調試模式,並能夠跨越該行。所有4個對象都被定義並可以打印得很好(所以這不是訪問問題)。在調試模式下查看時,所有4個對象都具有期望的值。然而,調試模式從(1)跳到我的代碼的其餘部分,從不碰(2)和(3)。放置在MyClass的構造函數中的調試點永遠不會到達。

我可以調用MyClass的默認構造函數代替4參數構造函數,它的行爲如所期望的那樣。然後,我可以在(2)之後複製/粘貼4參數構造函數的內容,並且正確設置所有4個參數,並根據需要創建對象。顯然這是一個可行的解決方法,但我找不到4參數構造函數失敗的原因。

總之,我不知道這是如何可能的,更不用說如何阻止它發生。

編輯:我已經對代碼執行了多次clean - > build - > debug,所以我相當確信它不是.class的問題。以防萬一我刪除.bin和刷新,這沒有效果。

+1

我假設你調試一個.class文件(字節碼),它不與源同步。手動刪除「bin」,按F5。 – Aubin

+0

嘗試創建新項目,然後嘗試調試它。可能有一個緩存的值會導致未處理的文件 –

+0

我同意以前的評論。您可以使用eclipse菜單中的「Project/Clean ...」 – Brad

回答

0

可能會有一個錯誤,不實施Throwable,因此不能被捕獲?你在構造函數中做什麼?例如ChuckNorris異常:) Uncatchable ChuckNorrisException

+0

創建一個新項目修復它。 雖然,我的構造函數只是調用4組,每個參數一個。即使它拋出了一個錯誤,但我認爲調試模式仍然可以讓我逐步瀏覽並看到拋出的錯誤。 – JuniorIncanter

相關問題