2009-01-23 78 views

回答

43

有兩種方法,您可以使用JScript或VBScript進行編碼,這些方法確實具有該構造,或者您可以在代碼中對其進行編譯。

使用JScript中你會用下列類型的構造:通過使用錯誤的簡歷在旁邊點

<script language="jscript" runat="server"> 
try { 
     tryStatements} 
catch(exception){ 
     catchStatements} 
finally { 
     finallyStatements} 
</script> 

在你的ASP代碼,你掰過來,你就會有一個嘗試和檢查的Err.Number在像這樣的一個點上:

<% 
Dim i 
' Turn on error Handling 
On Error Resume Next 


'Code here that you want to catch errors from 

' Error Handler 
If Err.Number <> 0 Then 
    ' Error Occurred/Trap it 
    On Error Goto 0 ' But don't let other errors hide! 
    ' Code to cope with the error here 
End If 
On Error Goto 0 ' Reset error handling. 

%> 
2

已經有一段時間,因爲我是在ASP土地,但IIRC有幾種方法:

try catch finally可以在VBS合理模擬(好文章 here here),並有一個活動叫class_terminate你可以看並在全局範圍內捕獲異常。然後有可能更改您的腳本語言......

+1

很高興認識的底部添加以下代碼,但bejeebus那難看。我會切換腳本語言。 – 2009-01-23 11:36:41

+0

告訴我關於它:-)我必須維護一些舊的項目,並且ASP缺少其他腳本語言現在擁有的很多標準功能...... – 2009-01-23 12:46:27

1

某些方案並不總是允許開發人員切換腳本語言。

我的偏好肯定適用於JavaScript(我已經在新項目中使用了它)。但是,維護較舊的項目仍然是必需的和必要的。不幸的是,這些都是用VBScript編寫的。

所以即使這個解決方案沒有提供真正的「try/catch」功能,結果也是一樣的,這對我來說完成工作已經足夠了。

7

一個相當不錯的方法來處理這個丟失COM類:

Dim o:Set o = Nothing 
On Error Resume Next 
Set o = CreateObject("foo.bar") 
On Error Goto 0 
If o Is Nothing Then 
    Response.Write "Oups, foo.bar isn't installed on this server!" 
Else 
    Response.Write "Foo bar found, yay." 
End If 
4

對於海納誰在ASP工作以及更現代的語言,問題就會招來一笑道。根據我的經驗,使用自定義錯誤處理程序(在IIS中設置以處理500; 100錯誤)是ASP錯誤處理的最佳選擇。本文介紹該方法,甚至爲您提供一些示例代碼/數據庫表定義。

http://www.15seconds.com/issue/020821.htm

4

聲明上的錯誤繼續下一步應該放在我們要驗證什麼上面。

On Error Resume Next 
    'Your code logic is here 

然後用語句結尾,如:

If Err.Number <> 0 then 

    'Your error message goes here' 

    End if 
9

關於Wolfwyrd的前面回答:「在錯誤繼續下一步」其實輪流錯誤處理掉!不開。On Error Goto 0會將錯誤處理重新打開,因爲至少我們希望機器能夠抓住它,如果我們沒有寫入自己的話。關=將它交給你處理。

如果您使用On Error Resume Next,則需要注意其中包含多少代碼:請記住,短語「If Err.Number <> 0 Then」僅指最前一個觸發的錯誤。

如果您的「On Error Resume Next」之後的代碼塊有幾個地方可能會合理預期它會失敗,則必須在每個可能的故障之後放置「If Err.number <> 0」行,檢查執行。

否則,在「出現錯誤繼續下一步」之後,就意味着它的含義 - 您的代碼可能會按照它喜歡的方式執行儘可能多的行,並且執行過程會繼續愉快地進行。這就是爲什麼這是屁股疼痛。

7

1)添加On Error Resume Next頁面

2)的頂部在頁面

If Err.Number <> 0 Then 

    Response.Write (Err.Description) 

    Response.End 

End If 

On Error GoTo 0