国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ASP 中健壯的頁(yè)結(jié)構(gòu)的異常處理

2019-11-18 19:53:40
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

錯(cuò)誤處理是讓程序員牢騷滿腹的東西之一。讓我們來(lái)面對(duì)它,我們不寫(xiě)錯(cuò)誤的代碼就是了。。。或者類(lèi)似的想法。不幸的是,代碼中的運(yùn)行時(shí)錯(cuò)誤可能有許多的原因,從硬件、軟件的改變到使用了別的開(kāi)發(fā)團(tuán)隊(duì)的代碼等等。有效的處理這些錯(cuò)誤并使得它對(duì)于網(wǎng)站正常操作過(guò)程的中斷最小化是每個(gè)有良知的程序員的責(zé)任。

 
在本文討論的范圍內(nèi),有三個(gè)不同的地方可以發(fā)生錯(cuò)誤:腳本,中間件,以及IT內(nèi)部架構(gòu)。IT內(nèi)部架構(gòu)的錯(cuò)誤,比方周期性的性能降低并導(dǎo)致IIS進(jìn)行(Inetinfo.exe)崩潰幾乎是無(wú)法避免的。這種類(lèi)型的錯(cuò)誤通常只能打電話要求技術(shù)支持并且會(huì)讓系統(tǒng)管理員忙上很久。開(kāi)發(fā)者不能為阻止這類(lèi)錯(cuò)誤做些什么,但是我們通常能夠應(yīng)付和改正腳本和中間件中的錯(cuò)誤。在安裝了IIS以后,缺省的服務(wù)器端腳本語(yǔ)言被設(shè)置成VBScript。許多Web 開(kāi)發(fā)團(tuán)隊(duì)在他們的開(kāi)發(fā)環(huán)境中保持了這些缺省設(shè)置,這是不幸的,因?yàn)閂BScript對(duì)于處理運(yùn)行時(shí)錯(cuò)誤的支持非常的差。在VBScript中,開(kāi)發(fā)者可以使用的唯一一個(gè)錯(cuò)誤處理結(jié)構(gòu)是

On Error Resume Next (打開(kāi)錯(cuò)誤處理功能)和On Error GoTo 0 (關(guān)閉錯(cuò)誤處理功能).

為了在你的asp 頁(yè)面里有效的使用這個(gè)錯(cuò)誤處理結(jié)構(gòu),你可能需要用這些結(jié)構(gòu)包括可能拋出異常的代碼,就象下面這樣:

 

  <%

  Dim myVar

  On Error Resume Next

 '下面一行代碼會(huì)在MSxml 4.0沒(méi)有被安裝或者已經(jīng)損壞的情況下產(chǎn)生錯(cuò)誤

  Set myVar = Server.CreateObject("MSXML2.DOMDocument.4.0")

  If Err.Number <> 0 Then

  ' 在這里處理錯(cuò)誤

 ' 結(jié)束錯(cuò)誤處理,避免以后發(fā)生的錯(cuò)誤無(wú)法被發(fā)現(xiàn)

 
  On Error GoTo 0

  Else

  ' myVar現(xiàn)在指向 MSXML 4.0 DOMDocument的一個(gè)實(shí)例

  ' 結(jié)束錯(cuò)誤處理,避免以后發(fā)生的錯(cuò)誤無(wú)法被發(fā)現(xiàn)

  On Error GoTo 0

   End If

 

就象你看到的一樣,如果你要在每一行現(xiàn)有的可能發(fā)生錯(cuò)誤的代碼上使用上面的規(guī)則,你的程序馬上就會(huì)充滿 "On Error" 和 "If Err.Number <> 0 Then . . ." 這樣的結(jié)構(gòu)。

而另一方面JScript對(duì)于健壯的錯(cuò)誤處理機(jī)制“結(jié)構(gòu)化異常處理(SEH)”有內(nèi)建的支持。使用SEH能夠讓你的軟件開(kāi)發(fā)團(tuán)隊(duì)順利的轉(zhuǎn)移到.NET 環(huán)境上來(lái),因?yàn)镾EH是JScript.NET, VB.NET, 和 C#缺省的錯(cuò)誤處理機(jī)制。(注意:.NET不支持VBScript。)下面的例子代碼執(zhí)行與VBScript代碼相同的操作,但是使用JScript語(yǔ)言并用SEH來(lái)處理異常

 <%@ LANGUAGE="JScript" %>

 <%

  varmyVar;

try {

 myVar = Server.CreateObject("MSXML2.DOMDocument.4.0");

  // 如果上面發(fā)生了錯(cuò)誤,那么catch

// 代碼塊就會(huì)立刻被執(zhí)行

 // 并在myVar上進(jìn)行必要的操作。

 }

 catch (e) {

  // 在這里處理異常,異常本身可以用

  // 'e' 變量進(jìn)行引用。

  }

 finally {

 // 在這里進(jìn)行所有收尾工作

 // 這段代碼不管錯(cuò)誤有沒(méi)有發(fā)生

  // (也就是“catch”塊有沒(méi)有運(yùn)行)

  // 都會(huì)執(zhí)行。

  }

 %>

通過(guò)在服務(wù)器端使用JScript,你就得到了SEH帶來(lái)的好處,以及對(duì)復(fù)雜ASP對(duì)象,比方Server,Request和Response對(duì)象的完全使用。要把這種腳本語(yǔ)言設(shè)置成你的ASP頁(yè)面的缺省語(yǔ)言,你只需要簡(jiǎn)單的在你的ASP頁(yè)面上添加@LANGUAGE指令,就象上面的例子那樣。

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 古蔺县| 神池县| 荥经县| 阿勒泰市| 扎囊县| 改则县| 佛学| 永靖县| 全州县| 宁安市| 湘潭县| 舒城县| 筠连县| 刚察县| 海兴县| 临安市| 平舆县| 樟树市| 胶南市| 屯留县| 兴安县| 江山市| 颍上县| 时尚| 商水县| 宣汉县| 乐陵市| 邻水| 双牌县| 许昌县| 中阳县| 融水| 平潭县| 广丰县| 淅川县| 宿迁市| 长白| 临沂市| 墨竹工卡县| 巴里| 香格里拉县|