在類中添加斷言

來源:互聯網
上載者:User
簡述:
用try捕獲異常後主動拋出一個異常,在Global.asax.vb的Application_Error中用Server.ClearError()清除異常,用System.Web.HttpContext.Current.Response輸出javascript代碼實現資訊提醒和返回上一頁。


詳細說明:
例如,把串連資料庫的方法做成一個類cdbconn.vb。問題在於當資料庫連接失敗的時候,系統自動拋出的串連失敗的異常的處理。
由於程式調用該類的對象後的動作不可預計,因此最好在處理該異常後,背景程式就此結束,返回之前的頁面。
在類中捕獲異常同樣可以try,但是處理完後使背景程式就此結束就有點麻煩,在論壇中搜尋到了思歸大大給的一個串連:

HOW TO: Create Custom Error Reporting Pages in ASP.NET by Using Visual C# .NET
http://support.microsoft.com/default.aspx?scid=kb;EN-US;306355
vb.net的聯結是
http://support.microsoft.com/default.aspx?scid=kb;EN-US;308132

實踐得出方案如下:
在類檔案cdbconn.vb中有
Try
dbconn.Open()
Catch ex As Exception
'System.Web.HttpContext.Current.Response.Write(win.msgbox(strMsg_noneDatabase))
Throw New System.Exception(strMsg_noneDatabase)
End Try
截獲異常後再拋出一個異常。這話聽起來有點毛病,主要的用途在於可能會需要處理異常帶來的麻煩,這裡沒有什麼需要處理,所以只是自訂一個異常資訊給系統使用者。

在Global.asax.vb中的Application_Error中添加相關動作
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' 在發生錯誤時激發
Dim objErr As Exception = Server.GetLastError().GetBaseException()
Dim err As String = "Error Caught in Application_Error event" & _
System.Environment.NewLine & _
"Error in: " & Request.Url.ToString() & _
System.Environment.NewLine & _
"Error Message: " & objErr.Message.ToString() & _
System.Environment.NewLine & _
"Stack Trace:" & objErr.StackTrace.ToString()

'EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error)
Server.ClearError()
System.Web.HttpContext.Current.Response.Write("<script language='javascript'>alert('" & objErr.Message.ToString & "');</script>")
System.Web.HttpContext.Current.Response.Write("<script language='javascript'>history.go(-1);</script>")
End Sub

這裡'EventLog.WriteEntry("Sample_WebApp", err, EventLogEntryType.Error)會使異常正常拋出,而不會繼續向下執行,所以注釋掉了,msdn上拷來的,難道是版本問題?

最重要的就是Server.ClearError(),沒有它異常會正常拋出的。截止到這一句系統會返回一張白紙,什麼都沒有這當然是不行的,所以下面用response輸出提示,並返回上一頁。至此問題解決。






相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

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

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