什麼我:全球的try-catch在asp.net頁面加載(VB在這種情況下)
SecureBasePage.vb
它繼承SecureBasePage
Default.aspx
(供需要登錄的網頁被繼承)
應該是什麼情況:客戶端請求Default.aspx
但被重定向到登錄,因爲他沒有登錄
SecureBasePage.vb
有這種構造
Public Sub()
If userIsAuthenticated Then
Else
Throw New LoginException()
End If
End Sub
這導致例外LoginException
。現在我想讓它被一個不知何故的全局異常處理程序捕捉到,它將客戶端踢到login.aspx
。
我知道有一個功能Application_Error()
在Global.asax
但在我看來,它僅花費了Server.GetLastError()
和不捕獲異常,這不是一個異常處理程序。所以這個函數更有可能是允許開發者發送關於未處理異常的電子郵件。我會稱之爲'全球未處理異常處理程序'而不是'全局異常處理程序'。
有什麼我可以嘗試趕上構造函數異常拋出?
是的,但是我爲什麼要在全球做的原因,是因爲我想我自己的異常全局了。這樣它就不會綁定到頁面,而是綁定到全局 – Highmastdon
如果所有需要此邏輯的頁面都是從「SecureBasePage」繼承的,那麼它已經是全局的繼承方式。另外,生成你自己的例外不是一個好方法;自定義異常應該保留用於設計缺陷或限制。 –
Oke也許最好在'SecureBasePage'中做,但是你能給我一篇文章或者一些解釋'最佳實踐'使用自定義異常的原因,以及爲什麼不以這種方式使用它,因爲我需要解釋這給我的主管。他有點堅持使用例外。 – Highmastdon