有沒有一種方法可以在不使用try catch方法的情況下集中處理錯誤或異常處理?C#中是否存在集中式錯誤處理過程?
3
A
回答
2
如果這是ASP.NET,你可以添加一個Global.asax
文件到網站,並處理Application_Error
方法。
這是怎麼了,我一般使用它:
void Application_Error(object sender, EventArgs e)
{
// Code that runs when an unhandled error occurs
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource("MySource",
"Application");
}
System.Diagnostics.EventLog.WriteEntry("MySource",
Server.GetLastError().ToString());
}
+0
雖然沒有意識到OP,但事件日誌等方法中的東西並不是必需的 - 您可以隨意處理它。重要的是Global.asax和'Server.GetLastError()'中方法的簽名,它給你最近拋出的異常。 – 2010-09-13 11:17:24
8
使用AppDomain
的UnhandledException
事件:
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
}
static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
// log the exception
}
對於ASP.NET使用您將使用glabal.asax。
0
您可以嘗試基於AOP的插件,如PostSharp,將異常處理代碼注入到具有自定義屬性的類和/或方法中。這是在編譯後完成的,所以你的源代碼保持乾淨。看看這個 - http://www.sharpcrafters.com/postsharp/documentation/getting-started
0
如果你使用WinForms,你可以看看my other answer related to this。儘管如此,它的確使用了try-catch
,因爲我沒有其他方法可以知道。
查看其他答案的ASP.NET和可能的其他.NET使用。
相關問題
- 1. 集中式錯誤處理
- 2. 存儲過程中的錯誤處理
- 3. 存儲過程中的錯誤處理
- 4. 是否存在處理PHP項目中的錯誤的模式?
- 5. 集中式錯誤處理改造2?
- 6. C++中是否存在錯誤類型?
- 7. SQL存儲過程和錯誤處理
- 8. MySQL存儲過程錯誤處理
- 9. 存儲過程和錯誤處理
- 10. 在C++中處理字符串錯誤時的錯誤處理
- 11. SQL Server錯誤處理,確定是否存在記錄,然後執行過程
- 12. 從存儲過程處理程序中訪問錯誤堆棧
- 13. 「錯誤預處理過程中」是在ASP.NET性能計數器
- 14. 處理Oracle過程錯誤
- 15. 在C++ Assignment Operator教程中是否存在拼寫錯誤?
- 16. 在time_t中轉換DateTime而不在C++ CLI中處理錯誤是否安全?
- 17. 如何處理基本MySQL存儲過程中的錯誤?
- 18. SQL Server存儲過程中的錯誤處理
- 19. ASP.NET - 數據庫存儲過程中的錯誤處理
- 20. 存儲過程中的多重錯誤處理
- 21. Oracle存儲過程中的錯誤處理
- 22. 我是否以錯誤的方式使用處理程序?
- 23. 我是否可以通過編程方式處理webforms中的緩存頁面
- 24. 在python中處理c庫錯誤?
- 25. 在C中錯誤處理mkdir和chdir?
- 26. Repository模式和收集錯誤處理
- 27. phantomJs錯誤處理程序是否會捕獲錯誤?
- 28. 在執行過程中處理VBScript中的錯誤
- 29. 收集環境中的錯誤處理
- 30. 彈簧集成中的錯誤處理
你使用WinForms嗎? – Branimir 2010-09-13 11:06:42
您是否對集中式錯誤回退感興趣,以便在關閉應用程序之前記錄並顯示友好的消息,或者您是否正在討論實際處理錯誤的中心位置。前一種情況由'Application.ThreadException'(在WinForms中)和'AppDomain.UnhandledException'支持。後一種情況通常是不可能的,因爲在中央位置通常沒有足夠的上下文來做出關於如何從錯誤中恢復的決定。 – 2010-09-13 13:25:24