2013-02-21 71 views
1

我的大部分代碼都是通過try/catch和OpenLog(修改爲處理SSJS異常)處理錯誤。不幸的是,SSJS中的例外給出hard to read stack trace來自LotusScript的LSI_Info的SSJS等效

所以我需要傳遞更多的信息 - 至少事件/方法在哪裏是錯誤處理程序。我可以簡單地將「方法XY」參數放到每個OpenLog.logError調用中,但這會使每個處理程序都是唯一的,並且容易出錯(程序員喜歡copypasta)。如果LSI_Info等效,錯誤處理程序會保持不變(這樣您就可以在Eclipse中將它們定義爲模板)。

是否有任何調用,它返回SSJS代碼(包括庫)的方法/事件的「我在哪裏」信息?

+0

題外話:只是爲了警告人們。不要再使用LSI_INFO()。它可能導致內存損壞/崩潰。正確的LS命令是GetThreadInfo()。 http://www-01.ibm.com/support/docview.wss?uid=swg21237286 – 2013-02-21 13:51:59

+0

IBM_TECHNICAL_SUPPORT文件夾中的Xpages日誌通常詳細說明XPage和失敗的代碼行。 – 2013-02-21 13:53:40

+1

下面是一些想法http://dontpanic82.blogspot.fi/2009/12/helper-functions-for-debugging-xpages.html但我不確定您是否可以通過這種方式獲取方法/事件。 – 2013-02-21 14:02:34

回答

6

看看的代碼消息我的調試工具欄的類(在GitHub上找到了here)。我包含一個'漂亮打印'錯誤的方法,並捕獲com.ibm.jscript.InterpretException。我用它發送一個格式化的錯誤消息到一個OpenLog事件文檔。它(有點)模仿您在默認的XPage錯誤頁面中獲得的信息。

要查看格式化錯誤的樣子,請轉到我的工具欄的demo page並點擊測試1或測試2按鈕。這將拋出一個由自定義錯誤表單捕獲的SSJS錯誤。該表單將消息寫入配置爲將錯誤消息存儲在單獨的OpenLog數據庫中的工具欄。

(工具欄下載可以發現here上OpenNTF)