C#異常處置的一些經歷和技能。本站提示廣大學習愛好者:(C#異常處置的一些經歷和技能)文章只能為提供參考,不一定能成為您想要的結果。以下是C#異常處置的一些經歷和技能正文
1、甚麼時刻該異常處置?
1)代碼最外層,如WinFrom,防止用戶看到外部異常信息用戶體驗欠好,或許形成法式瓦解。
2)碰到異常須要恢復狀況或許重試的處所。例如銜接數據庫有時掉敗了,可以有個重連機制,在Catch塊從新銜接數據庫。
3)關於一系列有能夠掉敗的義務,個中有一個義務掉敗,不想影響到其他義務。例如要上傳100張圖片,不想由於一張圖片上傳產生異常而掉敗,進而終止全部上傳義務,僅須要記載下掉敗的圖片,提示用戶重傳便可。
2、異常處置須要留意的處所
1)Catch和Finally代碼應當異常短,並且勝利率極高,防止本身又拋出一個異常。不然CLR會終止過程,防止平安破綻或許弗成預知的效果。這個相似於Windows藍屏,產生了嚴重的毛病,情願使體系弗成用。
2)Catch塊盡可能防止直接捕獲異常的基類Exception,而應當捕獲詳細的異常類。
3、異常處置的辦法和技能
1)能否能構建同一的框架處置異常,而不消手工來處置呢?
有的人能夠會問,能不克不及偷懶,在一個處所處置異常就好了。假如僅僅是記載異常體系信息,告訴到用戶,並且這些信息平日是可以缺乏一些高低文的,是可以構建統一的機制記載異常信息的。
例如:
WinFrom的Application對象自己就供給了ThreadException時光來捕獲為處置的異常
static void Main()
{
//注冊捕獲異常事宜
Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException);
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
Exception ex = e.Exception;
//做一些極端簡略的記載異常信息操作
}
又例如:
WebFrom的Global.asax自己就曾經界說了void Application_Error(object sender, EventArgs e) 來處置異常
void Application_Error(object sender, EventArgs e)
{
// 在湧現未處置的毛病時運轉的代碼
Exception ex = Server.GetLastError();
//處置完異常後消除異常
Server.ClearError();
}
然則許多時刻,異常處置,不只僅只是記載到了毛病信息便可以了,有時刻是須要掉敗重試或許清算資本等等,是以,僅僅靠同一構建異常處置框架是不敷靈巧的,是以可以一方面同一處置,別的一方面特別的處所可以別的處置。