ASP 3.0進階編程(三十三)

來源:互聯網
上載者:User
7.4.2 VBScript錯誤處理
在VBScript中,可以使指令碼解譯器不處理其找到的任何錯誤,並且使用On Error Resume Next語句繼續運行下個語句。一旦這個語句已被處理,指令碼引擎將繼續運行後面的程式,而不理會已經發現的任何錯誤。然而,這種過程僅適用於順序執行語句的環境,換句話說,不適用於嵌套的函數或子程式。
1. 使用On Error Resume Next語句
一個錯誤在子程式中出現時,如果沒有運行On Error Resume Next語句,那麼錯誤將被交給調用它的環境,這個過程一直重複到找到運行On Error Resume Next語句的環境繼續運行,或者找到預設的指令碼錯誤處理器,把錯誤交給ASP並且IIS顯示預設錯誤網頁。這個過程如圖7-16所示:
 
 
 
圖7-16 錯誤處理過程
這種錯誤調用鏈意味著可以建立防止使程式停止啟動並執行運行期錯誤的函數和子程式。如果在子程式的開頭放置一個On Error Resume Next語句,任何運行期錯誤會中止這個子程式的運行,但是調用該子程式的程式將繼續運行而不會引起網頁的停止。
例如,如果需要向一個檔案中寫入字串,可以通過一個獨立的函數對檔案進行訪問檔案,防止錯誤中斷整個程式的運行:
' create a file named strFileName, overwriting any existing one with that name
' and writes strContent into it then closes the file
' returns True if it succeeds, or False on any error
Function WriteNewFile(strFileName, strContent)
On Error Resume Next ' turn off the default error handler
WiteNewFile = Flase ' default return value of function
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then Set objFile = objFSO.CreateTextFile(strFileName, True)
If Err.Number = 0 Then objFile.WriteLine strContent
If Err.Number = 0 Then objFile.Close
If Err.Number = 0 Then WriteNewFile = True
End Function
注意上面的程式在試圖處理每個程式語句之前,先檢查VBScript的Err對象的Number屬性。如果這個值為0(還沒有出現錯誤),那麼就能夠繼續對檔案的定入和建立過程。然而如果錯誤確實發生了,指令碼引擎將設定Err對象的屬性的值,並且繼續處理下一行。
只要不引起錯誤而能正常運行,函數的傳回值將設定為“True”。否則函數將返回“False”。在編程中可以在對其進行測試以後,再使用該函數和採取其他行動。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.