ASP 中健壯的頁結構的異常處理

來源:互聯網
上載者:User
異常處理


    錯誤處理是讓程式員牢騷滿腹的東西之一。讓我們來面對它,我們不寫錯誤的代碼就是了。。。或者類似的想法。不幸的是,代碼中的執行階段錯誤可能有許多的原因,從硬體、軟體的改變到使用了別的Team Dev的代碼等等。有效處理這些錯誤並使得它對於網站正常操作過程的中斷最小化是每個有良知的程式員的責任。

    在本文討論的範圍內,有三個不同的地方可以發生錯誤:指令碼,中介軟體,以及IT內部架構。IT內部架構的錯誤,比方周期性的效能降低並導致IIS進行(Inetinfo.exe)崩潰幾乎是無法避免的。這種類型的錯誤通常只能打電話要求支援人員並且會讓系統管理員忙上很久。開發人員不能為阻止這類錯誤做些什麼,但是我們通常能夠應付和改正指令碼和中介軟體中的錯誤。 在安裝了IIS以後,預設的伺服器端指令碼語言被設定成VBScript。許多Web Team Dev在他們的開發環境中保持了這些預設設定,這是不幸的,因為VBScript對於處理執行階段錯誤的支援非常的差。在VBScript中,開發人員可以使用的唯一一個錯誤處理結構是

On Error Resume Next (開啟錯誤處理功能) 和
On Error GoTo 0 (關閉錯誤處理功能).
為了在你的ASP 頁面裡有效使用這個錯誤處理結構,你可能需要用這些結構包括可能拋出異常的代碼,就象下面這樣:


<%
Dim myVar
On Error Resume Next
'下面一行代碼會在MSXML 4.0沒有被安裝或者已經損壞的情況下產生錯誤
Set myVar = Server.CreateObject("MSXML2.DOMDocument.4.0")
If Err.Number <> 0 Then
' 在這裡處理錯誤
' 結束錯誤處理,避免以後發生的錯誤無法被發現
On Error GoTo 0
Else
' myVar 現在指向 MSXML 4.0 DOMDocument的一個執行個體
' 結束錯誤處理,避免以後發生的錯誤無法被發現
On Error GoTo 0
End If


就象你看到的一樣,如果你要在每一行現有的可能發生錯誤的代碼上使用上面的規則,你的程式馬上就會充滿 "On Error" 和 "If Err.Number <> 0 Then . . ." 這樣的結構。


而另一方面JScript對於健壯的錯誤處理機制“結構化異常處理(SEH)”有內建的支援。使用SEH能夠讓你的軟體Team Dev順利的轉移到.NET 環境上來,因為SEH是JScript.NET, VB.NET, 和 C#預設的錯誤處理機制。(注意:.NET不支援VBScript。)下面的例子代碼執行與VBScript代碼相同的操作,但是使用JScript語言並用SEH來處理異常

<%@ LANGUAGE="JScript" %>
<%
var myVar;
try {
myVar = Server.CreateObject("MSXML2.DOMDocument.4.0");
// 如果上面發生了錯誤,那麼catch
// 代碼塊就會立刻被執行
// 並在myVar上進行必要的操作。
}
catch (e) {
// 在這裡處理異常,異常本身可以用
// 'e' 變數進行引用。
}
finally {
// 在這裡進行所有收尾工作
// 這段代碼不管錯誤有沒有發生
// (也就是“catch”塊有沒有運行)
// 都會執行。
}
%>
通過在伺服器端使用JScript,你就得到了SEH帶來的好處,以及對複雜ASP對象,比方Server,Request和Response對象的完全使用。要把這種指令碼語言設定成你的ASP頁面的預設語言,你只需要簡單的在你的ASP頁面上添加@LANGUAGE指令,就象上面的例子那樣。




聯繫我們

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