最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

你是不是這樣寫異常處理代碼的呢?

 更新時(shí)間:2013年05月14日 10:24:22   作者:  
本篇文章是對(duì),你是不是這樣寫異常處理代碼的進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

經(jīng)??吹酵逻@樣寫代碼:

復(fù)制代碼 代碼如下:

DataSet QueryDB()
{
   DataSet ds=null;

   try
    {
         //do something
    }
    catch (Exception ex)
    {
         //這里要做日志記錄
    }

    return ds;
}


這里有幾個(gè)問(wèn)題:

1:很明顯,如果QueryDB方法發(fā)生了任何異常,客戶端無(wú)法得知,例如客戶端調(diào)用QueryDB方法,該方法返回了null,那這代表數(shù)據(jù)庫(kù)里面沒有這個(gè)數(shù)據(jù)呢?還是拋出了異常?

2:注釋是不應(yīng)該存在的,它應(yīng)該被真實(shí)的日志記錄代碼給替代,例如Log.Write(ex);

3:該方法捕捉所有異常,這樣任何異常都被捕獲了,這對(duì)于開發(fā)很不方便,永遠(yuǎn)不要捕獲你不能處理的異常。

4:為什么這樣寫代碼??解釋是:真實(shí)用戶不希望看到錯(cuò)誤信息,初聽起來(lái),好像有幾分道理,試想沒有哪個(gè)用戶會(huì)用你的軟件,然后老是拋出個(gè)異常什么的,但是這是部署之后的事情啊,而不是開發(fā)的程序員不希望看到異常啊。在開發(fā)的時(shí)候,如果能夠看到詳細(xì)的異常信息,那么可以很快的改正,修復(fù)Bug,何樂而不為之呢??

于是修改為如下:

復(fù)制代碼 代碼如下:

DataSet QueryDB()
{
     DataSet ds = null;

     try
     {
           //do something
     }
     catch (Exception ex)
     {
          Log.Write(ex);
          throw ex;
      }

      return ds;
}


好了,現(xiàn)在異??偹惚徊东@了,并且也被成功了拋出來(lái)了。

這段代碼還是有問(wèn)題??

在catch語(yǔ)句塊中,throw ex; 最好修改為throw;

因?yàn)樵?net中,異常都是不可修改的,每一次異常被拋出的時(shí)候,異常的堆棧跟蹤信息都會(huì)被重置,

Throw 不會(huì)重置堆棧跟蹤信息,但是throw ex;會(huì)重置。所以為了更方便的查找異常的拋出位置,最好使用throw 語(yǔ)句,而不是throw ex;否則clr會(huì)認(rèn)為異常是在catch語(yǔ)句塊中拋出的。

順便再說(shuō)一句,不要捕獲你不能處理的異常,如果希望將來(lái)用戶看不到異常信息,

大可以使用AppDomain.或者Application的全局異常處理。

相關(guān)文章

  • C#?WPF調(diào)用QT窗口的方法

    C#?WPF調(diào)用QT窗口的方法

    本文主要介紹了C#?WPF調(diào)用QT窗口的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • C#使用對(duì)象序列化類庫(kù)MessasgePack

    C#使用對(duì)象序列化類庫(kù)MessasgePack

    這篇文章介紹了C#使用對(duì)象序列化類庫(kù)MessasgePack的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • C#異步編程幾點(diǎn)需要注意的地方

    C#異步編程幾點(diǎn)需要注意的地方

    這篇文章我們來(lái)討論下關(guān)于C#異步編程幾個(gè)不成文的建議,希望對(duì)你寫出高性能的異步編程代碼有所幫助
    2020-05-05
  • C#集合根據(jù)對(duì)象的某個(gè)屬性進(jìn)行去重的代碼示例

    C#集合根據(jù)對(duì)象的某個(gè)屬性進(jìn)行去重的代碼示例

    當(dāng)根據(jù)對(duì)象的Name屬性進(jìn)行去重時(shí),你可以使用以下三種方法:使用Distinct方法和自定義比較器、使用LINQ的GroupBy方法,以及使用HashSet,下面給大家介紹C#集合根據(jù)對(duì)象的某個(gè)屬性進(jìn)行去重的代碼示例,感興趣的朋友一起看看吧
    2024-03-03
  • C#中的char與string詳解

    C#中的char與string詳解

    本文詳細(xì)講解了C#中的char與string,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • C#文件管理類Directory實(shí)例分析

    C#文件管理類Directory實(shí)例分析

    這篇文章主要介紹了C#文件管理類Directory,非常實(shí)用,需要的朋友可以參考下
    2014-08-08
  • C#基于jwt實(shí)現(xiàn)分布式登錄

    C#基于jwt實(shí)現(xiàn)分布式登錄

    這篇文章主要介紹了C#基于jwt實(shí)現(xiàn)分布式登錄的步驟,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02
  • 使用c#實(shí)現(xiàn)微信自動(dòng)化功能

    使用c#實(shí)現(xiàn)微信自動(dòng)化功能

    這篇文章主要介紹了使用c#實(shí)現(xiàn)微信自動(dòng)化,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • c# DataTable與不同結(jié)構(gòu)實(shí)體類轉(zhuǎn)換的方法實(shí)例

    c# DataTable與不同結(jié)構(gòu)實(shí)體類轉(zhuǎn)換的方法實(shí)例

    這篇文章主要介紹了c#的DataTable與不同結(jié)構(gòu)實(shí)體類轉(zhuǎn)換的方法實(shí)例,在大數(shù)據(jù)量的情況下很實(shí)用,大家可以參考使用
    2013-11-11
  • C#接口在派生類和外部類中的調(diào)用方法示例

    C#接口在派生類和外部類中的調(diào)用方法示例

    這篇文章主要介紹了C#接口在派生類和外部類中的調(diào)用方法,結(jié)合實(shí)例形式分析了C#接口的定義與具體使用方法,需要的朋友可以參考下
    2017-02-02

最新評(píng)論

旺苍县| 搜索| 北川| 乳山市| 松溪县| 中牟县| 濉溪县| 周宁县| 平湖市| 苗栗市| 隆尧县| 宝应县| 北海市| 密云县| 南皮县| 确山县| 资源县| 延安市| 泽州县| 海南省| 阳原县| 延川县| 上饶市| 京山县| 固安县| 屏山县| 宝应县| 临武县| 富阳市| 盈江县| 望奎县| 措勤县| 赣州市| 台南县| 建阳市| 新乡县| 沙雅县| 介休市| 葫芦岛市| 上饶市| 灵武市|