簡體   English   中英

使Eclipse在其控制台中顯示最頂層的異常,而不是整個堆棧跟蹤

[英]Making Eclipse show the topmost exception in its console instead of the full stack trace

有沒有一種方法可以使Eclipse在其控制台中顯示“頂部”異常,而不是僅打印所有堆棧跟蹤信息並讓我始終被基本上沒有用的東西所占據呢? 這是一張照片:

在此處輸入圖片說明

在出現異常的情況下,有99%的時間我基本上想知道兩件事:名稱+消息加上它使用的方法。 無需向上滾動它們都不可見。 這就是我認為應該顯示數據的方式: 在此處輸入圖片說明

有沒有辦法改變這種Eclipse的行為?

  1. 我知道沒有Eclipse功能可以做到這一點。

  2. 我不同意IDE 應該這樣做。 IDE無法知道 stacktrace中的哪些信息有用或無用。 滾動控制台基於一些啟發式的堆棧跟蹤的所謂有用的一部分今天可以幫助你一點點,但明天它可能會妨礙你很多 如果開始折疊或編輯控制台窗口中顯示的stacktrace,則問題/危險可能會更加嚴重。

使用滾動條盧克!


如果您真的認為這是個好主意,請實施它,然后將補丁提交給Eclipse開發人員。 或創建一個插件。 或使用其他IDE。


順便說一句,您包含在注釋中的屏幕快照不會顯示IDE滾動控制台窗口。 而是顯示了實際上已按原樣傳遞給IDE的異常。 Eclipse在某種程度上也可以做到這一點,如JUnit測試視圖,錯誤視圖等所示。 但是,如果堆棧跟蹤已呈現為文本並寫入控制台窗口,則此方法將無效。 (首先,實際上未指定堆棧跟蹤的文本格式。)

我認為Eclipse中沒有辦法做到這一點。

但是我認為IDE實際上與此無關。 因為您的程序沒有捕獲異常,所以是JVM將輸出打印到控制台。 如果從命令行運行它,將會看到相同的輸出。

我認為程序應該處理異常並將所需級別的信息打印到控制台。

您可以使用grepclipse或GerpConsole之類的eclipse插件來過濾具有常規表達式的控制台輸出。

實際上,IDE與此無關。 您可能想重新表達一下這種觀點,因為有時有用的信息並不總是最后執行的行,而是堆棧跟蹤中更深的位置(例如:將無效值傳遞給方法,直到發生異常的第n級)。 )

Eclipse無法更改此行為,因為這是JVM的運行時行為。 當未捕獲到異常時,將使用System.err輸出堆棧跟蹤。 您可以通過替換錯誤輸出流來更改此設置。

您設置的PrintWriter可以保留System.err的原始副本,並只丟棄不需要的內容(即與“ ^\\s*(java(x?)\\.).*解決問題是不值得的。

更好的解決方案是捕獲和處理您的異常並輸出一些有用的信息。 當某些方法引發異常時,Java API非常明確。 那里應該沒有驚喜。

或者,另一種解決方案是完全避免異常,並很高興Java從一開始就打印出非常有用的堆棧跟蹤並幫助您調試應用程序。 實際上,許多語言都不會這樣做(或者不那么好)。 如果並且當您將應用程序部署到客戶端時,您會很高興用戶向您發送完整的堆棧跟蹤信息,而不僅僅是發生異常的單行代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM