ASP 3.0進階編程(三十一)

來源:互聯網
上載者:User
7.1.2 語義或“運行期”錯誤
語法錯誤的發現和處理是令人煩惱的,但在編程中會遇到一些真正“令人興奮”的另一類型的錯誤——語義錯誤(semantic error)或稱“運行期”錯誤(runtime error)。這類錯誤僅當運行一個指令碼代碼或其他程式時才會發現。換句話說完整有效代碼已經通過解譯器或編譯器的解釋或編譯,在執行時產生了錯誤。術語“運行期錯誤”通過是指語義錯誤的結果,也就是說這類錯誤存在於代碼的語義中,當代碼運行時它們才變成可見的。
這種區別來自於這種事實:程式編譯器或解譯器在處理常式代碼之前必須建立一種內部代碼的描述,涉及多種結構開頭和結尾的匹配,以便標明每種結構包含什麼內容,然後分析每個句子,以便知道如何執行這個句子。例如,如果在程式碼中有一個If Then … Else … End If 結構,解譯器或編譯器做的第一步工作就是分析哪些語句在“Then”的部分,哪些在“Else”部分。這一步的目的是,在對結構中的If條件進行測試之後,可以決定該到哪個分支去執行。
編譯器(諸如在程式設計語言像Visual Basic和C++中見到的那種)和解譯器(諸如用於像VBScript和JScript那樣的指令碼語言的解譯器)之間真正區別在於:編譯器不試圖運行程式碼,而是在對來源程式進行兩次預先處理後,形成二進位指令或符號代碼,並形成一個.exe檔案或.dll檔案。解譯器不含有代碼的檔案,而是在運行時逐步執行。
1. 使運行停止的錯誤
如果程式中含有一個語義錯誤,通常在運行時可得到提示。如果幸運的話,當錯誤發生時,程式會停止,這樣可以容易地找出錯誤所在。例如,下面這段程式定義了一個有六個元素的數組。
<%
Dim arrValues(5) 'to hold six elements, indexed from 0 to 5
ArrValues(6) = "Whoops, got an error"
%>
如果試圖讀或設定下標為6的元素值,可以得到一個運行期錯誤,如圖7-7所示:
圖7-7 程式執行結果6
注意這裡的錯誤類型是“runtime”(相當於語義)錯誤,而不是語法錯誤。錯誤資訊顯示了錯誤所在行數和錯誤的描述,有助於我們比較容易地找到相應的錯誤。但這是一個簡單的例子,在更複雜的程式碼中,這種錯誤可能出現在一些遍曆一些值並把它們加到一個數組中程式中。如下所示:
<%
Dim arrValues(5) ' to hold six elements
For intLoop = 0 To intListCount ' the number of items in some list
arrValues(intLoop) = Request.Form("SelectedItems")(intListCount)
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.