2016-07-14 112 views
1

您好我目前正在使用IBM Spss,並且我想知道在代碼拋出異常以便能夠獲取發生異常的代碼行時是否有方法?我能夠獲得行號是否有辦法訪問被執行的行的堆棧並從那裏獲取這些信息?任何想法都會很棒先謝謝你!Spss(mrScriptBasic)錯誤處理獲取代碼,其中發生錯誤

例如:

Dim x, y, z 
On Error Goto ErrorHandler 
x = 30 
y = 0 
z = x/y 'would like to grab this code since this is where the error occurred 
Exit 


ErrorHandler: 
debug.Log(Err.Description + _ 
" error occurred on line number " + _ 
CText(Err.LineNumber)) 

回答

2

沒有,沒有辦法,除非你把你自己的索引,從而爲宏擴展行號映射到實際的代碼等

你可以做什麼但是,要以塊的形式提交代碼並捕獲該塊的異常,這會縮小位置。在極限中,如果每行都是自己的塊,那麼您將確切知道錯誤發生的位置。

+0

感謝您的回覆@JKP我想過有關塊和捕獲異常,但是對於我正在嘗試執行的操作,我需要獲取發生錯誤的實際代碼。你的意思是說,這可能是宏擴展可能的,你是指創建我自己的堆棧並保持跟蹤?你能否給我更多的信息? – paul590

+1

如果您沒有任何宏,那麼在簡單情況下只保留一組命令並逐個執行它們就足夠了,但是如果在流中有任何INSERT或INCLUDE命令,則將檢索INSERT/INCLUDE而不是文件的內容。您將不得不截取並閱讀這些文件的內容並解析出這些命令。不容易。 – JKP

+1

使用宏,您可以運行SET MPRINT ON並從日誌文件中刪除命令。這讓我覺得,如果出現錯誤,也許看着日誌文件的尾部可能實際上是最好的策略。日誌文件記錄了所有實際的語法,假定日誌已打開,並且在每個命令後文件都刷新到磁盤,所以它始終是最新的。以下是這些內容在發生錯誤時的樣子, – JKP