2010-05-07 30 views
2

我正在從ASP頁面進行MSSQL存儲過程CLR調用。發生異常時,會記錄並重新排列。在這種情況下,我需要能夠處理ASP頁面中的異常(如果可能)。請注意,在這種情況下,我無法擺脫傳統的ASP;我被困在這個項目的遺留系統中。如果您知道處理經典ASP中的異常的方法,請告訴我。我感謝幫助!在經典ASP頁面中處理.NET異常

感謝, 泰勒

+0

你是從ASP調用存儲過程嗎?或者你是否在調用一些.NET代碼,這稱爲存儲過程?也許向我們展示一個例子。 – driis 2010-05-07 16:06:23

+0

我正在從ASP調用存儲過程;存儲過程會執行C#CLR代碼。 – Tyler 2010-05-07 18:23:04

回答

2

傳統ASP的代碼語言是VBScript,所以你必須湊合用該語言的錯誤處理能力,通過使用「上的錯誤...」結構。您需要決定是否爲SQL調用創建一個通用錯誤處理程序或插入某些特定的錯誤處理邏輯。

這些是你的錯誤處理選項:

On Error Goto 0  ' Turns off error trapping. This is most likely what you got now 
On Error Resume Next ' In case of error, simply execute next statement. Not recommended ! 
On Error Goto <label> ' Go to the specified label on an Error. 

如果你使用上的錯誤轉到...,Err對象將包含錯誤信息。這意味着你應該能夠寫出類似於:

On Error Goto errorHandler 
' Your code here. 

errorHandler: 
' Handle the error somehow. Perhaps log it and redirect to a prettier error page. 
Response.Write Err.Number 
Response.Write Err.Description 
+0

感謝您的回覆。在執行存儲過程之後(在ASP代碼中),出現以下代碼行:「如果Err.Number <> 0 Then」,然後是一些錯誤處理代碼。我懷疑asp.dll無法捕捉和處理.NET異常。你有什麼其他的建議?謝謝。 – Tyler 2010-05-07 18:35:23

+0

如果經典ASP錯誤機制出現並向您顯示ASP錯誤,那麼您應該可以像這樣處理它。如果沒有,你可能會做其他的事情......也許試着發佈一些示例代碼? – driis 2010-05-07 22:14:22

+0

我很長時間沒有在ASP中寫任何東西。你是對的;我錯誤地處理了錯誤。謝謝! – Tyler 2010-06-16 16:17:18