2012-08-08 58 views
1

我在我的Java 1.6- Oracle11g-JDBC(即OJDBC6)代碼中得到了一些SQLExceptions。但是我無法看到哪一行代碼導致了這個問題。 如何使用Eclipse找出哪一行代碼對此問題負責?Eclipse - 如何獲得導致異常的行?

我的代碼的輸出 -

Running main... 
Exception- java.sql.SQLSyntaxErrorException: ORA-00911: invalid character 
Exiting main... 

感謝。

PS-我不認爲有必要把代碼放在這裏。我只想知道哪一行是負責任的,並且自己修復代碼。我正盡力儘可能少地提供幫助。

+0

您可以請發佈您的代碼發生此異常和相關的周邊代碼。 – devang 2012-08-08 22:24:44

+0

您是否知道如何將eclipse連接到您的容器/網絡服務器以進行遠程調試? – Alfabravo 2012-08-08 22:27:03

回答

1

我假設例外被捕獲在你的主要方法的某處?無論他們在哪裏被抓到,都會執行myException.printStackTrace()。或者用調試器運行你的代碼,然後一行一行地查看它的位置。

+0

如何使用調試器運行我的代碼? – 2012-08-08 23:07:16

+0

這是一個關於Eclipse調試器的不錯的教程:http://www.vogella.com/articles/EclipseDebugging/article.html – SamYonnou 2012-08-08 23:23:47

+0

感謝您的鏈接。該代碼現在也被修復:) – 2012-08-08 23:50:51

2

你有一些代碼,某個地方,那就是下面這個模式:

try 
    { 
    ... 
    } 
catch (Exception err) 
    { 
    System.out.println("Exception- "+err); 
    } 

這是一個糟糕的模式,因爲,正如你看到的,報道的例外只有消息和異常消失。

可以使用err.printStackTrace(System.out)(如果您確實需要輸出stdout而不是stderr)或err.printStackTrace(),只是根本不捕獲異常,JVM將打印整個堆棧跟蹤。

堆棧跟蹤包含類,方法,文件名和行號。當打印出堆棧跟蹤信息時,Eclipse的控制檯會將文件名和行號轉換爲超鏈接,您只需單擊該超鏈接即可轉至源代碼。

+0

是的,我看到生成錯誤的行。現在,這裏有兩種類型的行 - 1 - 來自我的代碼的行,即代碼我可以看到的行。 2-從代碼我看不到的oracle jdbc類的代碼行。 所以,基本上,我將不得不忽略類型2的行,只關注類型1? – 2012-08-08 22:35:18

+0

是的 - 通常問題出在您的代碼中,但有時問題實際上是在庫中。在這種SQL語法錯誤的情況下,有用的部分是程序中SQL代碼的起源位置,然後確定該SQL的錯誤。 – dsh 2012-08-08 23:38:51