国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

global中捕獲異常

2019-11-14 15:46:53
字體:
來源:轉載
供稿:網友

  前言:由于現在日志非常重要,但是在哪里打寫日志比較好呢,我選擇的是在global中,把錯誤代碼網上拋,而不是在底層寫大量的try catch然后在catch中來寫日志,每個catch中的寫日志這樣就會避免了很多重復代碼。當然這是目前我們采取的一個方法,大家可以提出更好地方法來管理日志,下面我開始寫代碼

第一步:盡量拋棄項目中try catch。看下代碼

PRivate void ExceptionTestOne()        {                           int a = 1;                int b = 0;                int c = a/b;                        }

上面代碼會拋一個異常

第二步:如果項目中必須用try catch怎么辦,因為有時候連接wcf的時候如果出現異常時候我們需要關閉連接避免堵塞,那么我們就采取拋異常的方法

private void ExceptionTestTwo()        {            try            {                List<Simple> simples = null;                simples.Add(new Simple() { Name = "發生異常" });            }            catch (Exception ex)            {                                throw new Exception("",ex);            }                }

第三步:我們新建一個global.asax 在application_Error中把異常信息加入隊列中 如下

 //創建一個靜態的隊列記錄把異常都放在隊列中 private static Queue<Exception> queue = new Queue<Exception>(); protected void Application_Error(object sender, EventArgs e)         {            Exception exp = Server.GetLastError();            if (exp != null) {                queue.Enqueue(exp);            }            Server.ClearError();        }

第四步:異常信息加入日志(這里為了簡單就寫入txt文本中了)

protected void Application_Start(object sender, EventArgs e) {            ThreadPool.QueueUserWorkItem(a => {                while (true) {                    try {                        if (queue.Count > 0) {                            Exception ex = queue.Dequeue();                            WriteLog(ex);                        }                        else {                            System.Threading.Thread.Sleep(TimeSpan.FromSeconds(3));                        }                    }                    catch (Exception ex) {
                    WriteLog(ex);

} } }); }
    private void WriteLog(Exception ex)        {            if (!File.Exists(@"E:/C#系列/ExceptionDealWith/ExceptionDealWith/Log.txt")) {                FileStream fs1 = new FileStream(@"E:/C#系列/ExceptionDealWith/ExceptionDealWith/Log.txt", FileMode.Create, Fileaccess.Write);//創建寫入文件                 StreamWriter sw = new StreamWriter(fs1);                sw.WriteLine(ex.Message);//開始寫入值                sw.Close();                fs1.Close();            }            else            {                StreamWriter sr = File.AppendText(@"E:/C#系列/ExceptionDealWith/ExceptionDealWith/Log.txt");                    sr.WriteLine(ex.Message);                sr.Close();                            }        }

當然接入錯誤信息你可以多定義幾個比喻ip地址,堆棧信息錯誤等基本就是這么多了。這是基本思路。有日志了我就就可以根據時間,ip等進行查詢日志日志信息

 下載


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汾阳市| 池州市| 渑池县| 汾西县| 巴彦淖尔市| 民勤县| 仲巴县| 盐城市| 怀集县| 房山区| 安义县| 镇坪县| 汽车| 平安县| 子长县| 板桥市| 凉城县| 唐海县| 和田县| 凤翔县| 黑河市| 珲春市| 永德县| 泗水县| 武乡县| 安福县| 犍为县| 泾阳县| 印江| 手游| 阿尔山市| 平阳县| 云梦县| 彭山县| 甘南县| 阿巴嘎旗| 武威市| 郎溪县| 邯郸市| 民丰县| 民丰县|