的Lotus Notes調試實踐
我們做的第一件事是遵循了我們所有的LotusScript設置的結構。 如果它是一個函數或子程序(腳本庫中,作為代理人的一部分,作為一種形式,等的一部分),然後是結構:
MySubName小組(弦樂myParam)
對錯誤轉到BubbleError
“這種評論描述子程序做什麼
作為字符串昏暗所以LocalVariable
'/ /在這裡插入子程序代碼
退出小組
BubbleError:
錯誤錯誤,錯誤$&CHR $(10)及“程序”和Getthreadinfo(1)及“行”&CSTR(ERL)
END SUB
(請注意,僅作為例子使用的參數和定義的變量)
每個函數或子程序的第一行告訴的LotusScript應被困其中的錯誤。 這樣做的,甚至之前,任何變量的定義。 該最大的原因是因為每個函數/子程序都將有不同數量的一個臨時變量。 因為我們希望捕捉到每一個函數和子程序是不管什麼,很容易發現,如果它的頂部是錯誤。
後錯誤捕獲線來描述函數或子程序。 這可能是一條線或以上,但我們從我們的開發要求,它在那裡的。 我們喜歡的代碼進行評價,以便更容易支持。
接下來是函數或子程序的主體。 然後,在底部,是錯誤捕獲。 首先,如果子程序或函數已終止,通常我們得到捕獲錯誤代碼前退出。 如果出現了錯誤,那麼這個錯誤是冒泡到調用過程。 當前函數或子程序的名稱(這是什麼Getthreadinfo(1))和行號在當前函數或子程序傳遞錯誤的名稱。 由於我們使用關鍵字錯誤,然後調用函數或子程序,將引發一個錯誤,這將進入其捕獲錯誤代碼,這將增加上的程序名稱和行號,依此類推。
在某些點上冒泡需要停止。 對於代理,這是在小組初始化區。 為形式,將事件觸發代碼的形式。 在這部分(代碼開始),我們將遵循略有不同的結構:
小組初始化
對錯誤轉到BubbleErrorStop
“本評論介紹代理做什麼
作為字符串昏暗所以LocalVariable
'/ /在這裡插入子程序代碼
AgentDone:
退出小組
BubbleErrorStop:
作為字符串暗淡ERRMSG
作為新NotesSession暗淡errSession
作為NotesDocument的暗淡errDoc
ERRMSG =錯誤$&CHR $(10)及“程序”和Getthreadinfo(1)及“行”&CSTR(ERL)
出錯時繼續下一步
使用設置errDoc = errSession.CurrentDatabase.CreateDocument
呼叫errDoc.ReplaceItemValue(“申請表”,“錯誤”)
致電errDoc.ReplaceItemValue(“用戶名”,errSession.UserName)
,呼叫errDoc.ReplaceItemValue(“NotesVersion”,errSession.NotesVersion)
,呼叫errDoc.ReplaceItemValue(“NotesBuildVersion”,errSession.NotesBuildVersion)
呼叫errDoc.ReplaceItemValue(“綱要”,errSession.Platform)
,呼叫errDoc.ReplaceItemValue(“的ErrorMessage”,ERRMSG)
致電errDoc.Save(TRUE,TRUE,TRUE)
ERRMSG =左(ERRMSG,INSTR(ERRMSG,CHR $(10))-1)
MSGBOX ERRMSG CHR $(10)&CHR $(10)及“支持已錯誤的通知”。
ERR = 0
恢復AgentDone
END SUB
流量是什麼,我們收到了類似的 - 捕獲錯誤行是第一線,描述來自未來其次是實際的代碼。 正常終止退出之前,我們有一個“AgentDone”的標籤。 這將用於在錯誤的情況下,簡歷位置。 我們恢復到這個位置,終止代理。
我們的錯誤捕捉代碼這個時間是長了不少。 我們要報告的錯誤。 我們通過創建一個“錯誤”在當前數據庫中的文件。 請注意,我們不作任何假設有一個會議或當前數據庫或任何。 通過這種方式,捕獲錯誤代碼是通用的,可以複製並粘貼到未來的代理,無論誰是編碼的代理(他們沒有來命名自己的會話變量以某種方式,或任何)。 唯一的要求是,他們不使用這三個變量名。
我們報告的完整的錯誤消息(連同所有的冒泡程序信息)。 我們還可以捕獲用戶的平台和他們的Notes客戶機信息。 追查問題與特定版本的Notes這個有用 該文件被保存在當前數據庫中。 (請注意,我們忽略了在保存的任何錯誤 - 如果用戶只具有讀者訪問,他們的問題不會被報導是否會有很多讀者訪問用戶,而不是保存文件是郵寄的,在此設置。支持的人)。 然後,我們去掉所有程序的錯誤信息。 這樣做,因為我們要顯示的錯誤信息給用戶,他們不關心了,到那裡的所有步驟。 這樣的錯誤信息提供給用戶,隨著“安慰”的消息已通知支持。
最後,我們清除錯誤號碼只是讓未來的LotusScript運行,在保證“重新開始”,我們告訴代理恢復在“AgentDone”的標籤,其中出口代理。 如果我們沒有在那裡的最後一行,注會提出了一個“不恢復”的消息給用戶。
所以這是我們的錯誤捕獲。 這是約在上面鏈接的文章談到的技術類似。 有完整的線程信息,使得它更容易追查錯誤消息的來源。 當你有一個代理,其中包括一些腳本庫,你得到一個用戶打電話說他們有沒有這個俘獲“類型不匹配”錯誤運行的代理,你一定要試試自己的代理,並希望它會導致同樣的錯誤。 這個誘捕,你可以看一下在錯誤文件,看到什麼線所造成的錯誤。 然後你就進入了設計,遵循“行數”值(較低的右上角,這兩個數字的第一),導致錯誤的行,你知道究竟在何處發生錯誤。
1464觀眾觀看了5332次













