中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

將不(bu)確(que)定變為確(que)定~異常(chang)被拋出的順序

回到目錄

在程(cheng)序中,為了保(bao)正代碼的(de)嚴禁性我(wo)們(men)會在需要的(de)地方加個(ge)try...cache塊,作(zuo)用是(shi)對(dui)(dui)一(yi)個(ge)已知或者未知的(de)異常(chang)進(jin)行捕獲,這(zhe)是(shi)正常(chang)的(de),任何一(yi)種(zhong)面向(xiang)對(dui)(dui)象的(de)語(yu)言(yan)都提供了這(zhe)個(ge)基(ji)礎的(de)功能,C#也(ye)不例(li)外(wai),事實上這(zhe)篇文章的(de)重要是(shi),對(dui)(dui)于比(bi)較深度的(de)方法(fa)調用中,異常(chang)被(bei)拋(pao)出的(de)順序。

下面代(dai)碼塊中(zhong),WEB層調用(yong)(yong)BLL層方(fang)法(fa),而(er)BLL層方(fang)法(fa)去調用(yong)(yong)DAL層方(fang)法(fa),而(er)在這三個層的(de)三個方(fang)法(fa)中(zhong)都加了try...catch塊,而(er)在BLL與DAL中(zhong)我會故意讓(rang)程序產生一個已知的(de)異常,并進(jin)行捕獲,最后(hou)進(jin)行日(ri)志的(de)寫入。

看代碼:

 1 static void DAL()
 2     {
 3       int a = 0;
 4       try
 5       {
 6         int b = 1 / a;
 7       }
 8       catch (Exception e)
 9       {
10 
11         ErrMsg.Append(e.Message);
12 
13       }
14     }
15 
16     static void BLL()
17     {
18       try
19       {
20         DAL();
21         test t = null;
22         Console.WriteLine(t.nam);
23       }
24       catch (Exception e)
25       {
26 
27         ErrMsg.Append(e.Message);
28       }
29     }
30 
31     static void WEB()
32     {
33       try
34       {
35         BLL();
36       }
37       catch (Exception e)
38       {
39 
40         ErrMsg.Append(e.Message); 
41       }
42     }

調用代碼:

 static void Main(string[] args)
    {
      WEB();
      Console.WriteLine(ErrMsg.ToString());
    }

結果如下:

從結果上看(kan)出(chu),異(yi)常是按著產生的順(shun)序而依次被記錄的。

而別一種情況,如果我們不(bu)去捕獲(huo)異常(chang),它(ta)(ta)是否可以自己捕獲(huo)呢?答(da)案是否定的,它(ta)(ta)當然不(bu)能捕獲(huo),呵呵!

 1  static void DAL()
 2     {
 3       int a = 0;
 4       try
 5       {
 6         int b = 1 / a;
 7       }
 8       catch (Exception e)
 9       {
10 
11         //ErrMsg.Append(e.Message);
12 
13       }
14     }
15 
16     static void BLL()
17     {
18       try
19       {
20         DAL();
21         test t = null;
22         Console.WriteLine(t.nam);
23       }
24       catch (Exception e)
25       {
26 
27        // ErrMsg.Append(e.Message);
28       }
29     }
30 
31     static void WEB()
32     {
33       try
34       {
35         BLL();
36       }
37       catch (Exception e)
38       {
39         ErrMsg.Append(e.Message);
40       }
41     }

結果如下:

回到目錄

posted @ 2013-01-12 22:48  張占嶺  閱讀(954)  評論(0)    收藏  舉報