簡體   English   中英

我應該拋出Global.asax中的Application_Error處理程序中發生的異常嗎?

[英]Should I throw out an exception that happen in Application_Error handler in Global.asax?

aspx.cs中未處理的錯誤代碼將被global.asax中的Application_Error處理程序捕獲。
我在Application_Error處理程序中編寫了一些代碼來記錄aspx.cs中發生的這種未處理的錯誤
但是如果日志代碼本身也失敗並產生異常(可能是由於I / O或文件系統問題)
我應該拋出這樣的異常嗎?
如果我扔掉它,哪個事件應該收到這樣的例外?
或者如果我寫“throw”語法沒有區別?
代碼示例如下

protected void Application_Error(object sender, EventArgs e)
{
    try
    {
        // my codes to log exception to Database System here....
    }
    catch(Exception)
    {
        throw;  //Should I write "throw" syntax here ? 
    }
}

Application_Error是最后一個可以記錄在線程(當前正在為您的請求提供服務)中止之前發生的異常的地方。

您不需要拋出任何異常,因為它會在函數退出后自動執行。

這是一個合理的實施

我認為,如果您的故障轉移機制失敗,您最關心的是該怎么做。 在這種情況下,這是您的日志記錄。 這在計算機中是一個更大的問題,但構建鏈式故障轉移機制通常是浪費時間,因為最終一切都可能失敗(對自己的研究提出建議:盡量保持一切盡可能無狀態)。 您最好的選擇是擁有一個非常可靠的記錄機制作為您的最后手段,99.9%的成功將成功。 不打算如何創建這樣的機制(並且自己做這個並不是一個好主意 - 無論如何都要創建自己的記錄器,因為有很多技巧可以確保您的日志記錄足夠高並且非突兀)但總的來說,我建議你使用elmah ,它可能是目前最好的日志框架,它將滿足你的需求。

對於可能獲得的極少量錯誤(他們可能不會在現實生活中這樣做),我不會失去他們的睡眠。

  • 你想在記錄后拋出Server.GetLastException()嗎? 這取決於該例外的性質和原因。 我會在特殊的地方或彈出窗口中展示它
  • 如果嘗試記錄該異常時拋出異常? 那絕對你可能想要吞下它

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM