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

C#中try...catch的使用與常見面試題分享

 更新時間:2017年02月28日 09:35:48   作者:wolfy  
這篇文章首先給大家介紹了關(guān)于C#中try...catch的語法,而后又給大家分享了關(guān)于C#中try...catch最常見的面試題,具有一定的參考借鑒價值,需要的朋友們下面來一起看看吧。

前言

C#中Try-Catch語句大家都很熟悉了,但是細(xì)究起來,還是有很多東西可講的。最近在翻看之前總結(jié)的常見面試題中,發(fā)現(xiàn)關(guān)于try...catch異常處理的還是蠻多了,今天看到這個面試題,也就重新學(xué)習(xí)一下。

try..catch語法

 try-catch語句由一個try塊后跟一個或多個catch子句構(gòu)成,這些子句制定不同的異常處理程序。

引發(fā)異常時,公共語言運行時(CLR)會查找處理此異常的catch語句。如果當(dāng)前執(zhí)行的方法不包含這樣的catch塊,則CLR會查看調(diào)用當(dāng)前方法的方法,然后會遍歷疊用堆棧。如果找不到catch塊,則CLR會向用戶顯示一天有關(guān)未處理的異常的消息并停止執(zhí)行程序。

try塊包含可能導(dǎo)致異常的保護(hù)代碼。該塊一直執(zhí)行到引發(fā)異?;虺晒ν瓿蔀橹?。

class Program
 {
  static void Main(string[] args)
  {
   object o = null;
   try
   {
    //強制轉(zhuǎn)換 null 對象的嘗試引發(fā) NullReferenceException 異常
    int i = (int)o;
   }

   catch (NullReferenceException ex)
   //1.雖然可以使用不帶參數(shù)的 catch 子句捕捉任何類型的異常,但不推薦這種用法。 通常,您應(yīng)該只捕捉那些您知道如何從中恢復(fù)的異常。 因此,應(yīng)該總是指定一個從 System.Exception 派生的對象參數(shù)。
   //2.在同一個 try-catch 語句中可以使用一個以上的特定 catch 子句。 這種情況下 catch 子句的順序很重要,因為會按順序檢查 catch 子句。 將先捕獲特定程度較高的異常,而不是特定程度較小的異常。 如果對 catch 塊進(jìn)行排序以使永遠(yuǎn)不能達(dá)到后面的塊,編譯器將產(chǎn)生錯誤。
   //3. int i = (int)o; 很有可能引發(fā)NullReferenceException異常,所以將此catch放在前面
   //4.如果將catch (Exception ex)放在第一個,將不會達(dá)到后面的塊,編譯器將產(chǎn)生錯誤。
   {
    Console.WriteLine(ex.Message);
   }
   catch (DivideByZeroException div)
   {
    Console.WriteLine(div.Message);
   }
   catch (Exception ex)
   {
    Console.WriteLine(ex.Message);
   }
   Console.Read();
  }

try-catch的基本語法如上面所述,try-catch的執(zhí)行順序是:try塊中的代碼執(zhí)行出現(xiàn)異常將執(zhí)行catch塊中的代碼,如果try塊中的執(zhí)行沒有錯誤,將try塊中的代碼執(zhí)行完,不會執(zhí)行catch塊中的語句。

try-catch-finally:不管是否有異常,finally塊中的代碼都會執(zhí)行,finally塊常用于資源的釋放等。

try-catch的筆試題

第一種:值類型的

static int GetResult()
  {
   int a = 1;
   int b = 2;
   int n = 1;
   try
   {
    int k = a / b;
    return n;
   }
   catch (Exception ex)
   {

    Console.WriteLine(ex.Message);
    throw;
   }
   finally//不管有沒有發(fā)生異常 finally都會執(zhí)行
   {
    n++;
   }
  }

可能你已經(jīng)知道結(jié)果了:1,為什么呢?咱們可以看看反編譯的代碼,你就會清楚為什么了。

第二種:引用類型的

static Person GetResult()
  {
   int a = 1;
   int b = 2;
   Person p = new Person();
   p.Age = 1;
   try
   {
    int k = a / b;
    return p;
   }
   catch (Exception ex)
   {

    Console.WriteLine(ex.Message);
    throw;
   }
   finally//不管有沒有發(fā)生異常 finally都會執(zhí)行
   {
    p.Age++;
   }
  }

那么返回的這個person的age是多少呢?先看反編譯的結(jié)果:

結(jié)果為:2

總結(jié)

這個題考察還是try-catch-finally的執(zhí)行順序,以及引用類型和值類型,這里總結(jié)這個,只是換個角度重新學(xué)習(xí)一下。

好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

  • C# Winform實現(xiàn)截圖工具的示例代碼

    C# Winform實現(xiàn)截圖工具的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何使用C# Winform制作一個簡單的截圖工具,從而實現(xiàn)截圖功能,文中的示例代碼講解詳細(xì),有需要的可以參考下
    2024-02-02
  • C#實現(xiàn)自動識別URL網(wǎng)址的方法

    C#實現(xiàn)自動識別URL網(wǎng)址的方法

    這篇文章主要介紹了C#實現(xiàn)自動識別URL網(wǎng)址的方法,涉及C#操作URL地址的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#操作Access數(shù)據(jù)庫的實現(xiàn)過程(vs2019)

    C#操作Access數(shù)據(jù)庫的實現(xiàn)過程(vs2019)

    這篇文章主要介紹了C#操作Access數(shù)據(jù)庫的實現(xiàn)過程(vs2019),打開Office Access新建一個空白數(shù)據(jù)庫DATA.accdb,并改好存放位置,本文給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-02-02
  • c#編寫webservice服務(wù)引用實例分享

    c#編寫webservice服務(wù)引用實例分享

    c#編寫webservice服務(wù)引用實例分享,大家參考使用吧
    2013-12-12
  • C#使用for循環(huán)移除HTML標(biāo)記

    C#使用for循環(huán)移除HTML標(biāo)記

    大家在項目開發(fā)階段移除文字中的html標(biāo)記最常用的方法就是使用正則表達(dá)式,但是正則表達(dá)式不能處理所有的html文檔,所以采用迭代方式會更好,下面小編給大家解答下
    2016-08-08
  • C#命令行參數(shù)解析庫System.CommandLine使用

    C#命令行參數(shù)解析庫System.CommandLine使用

    System.CommandLine是一個基于.Net Standard 2.0的命令行參數(shù)解析庫,該項目還是屬于beta狀態(tài),期待以后的正式版本,文章通過示例代碼給大家介紹了System.CommandLine使用講解,感興趣的朋友一起看看吧
    2021-06-06
  • WPF實現(xiàn)在線預(yù)覽和顯示W(wǎng)ord和PDF文件

    WPF實現(xiàn)在線預(yù)覽和顯示W(wǎng)ord和PDF文件

    這篇文章主要為大家詳細(xì)介紹了如何使用WPF實現(xiàn)在線預(yù)覽和顯示W(wǎng)ord和PDF文件,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-02-02
  • C# WinForm制作登錄界面的實現(xiàn)步驟

    C# WinForm制作登錄界面的實現(xiàn)步驟

    本文主要介紹了C# WinForm制作登錄界面的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • C# 獲取程序集版本、文件版本

    C# 獲取程序集版本、文件版本

    C# 獲取程序集版本、文件版本的實現(xiàn)代碼。
    2009-09-09
  • 最新評論

    西华县| 新巴尔虎右旗| 肥乡县| 莆田市| 类乌齐县| 灵川县| 诏安县| 新平| 加查县| 鹿泉市| 曲阳县| 漳州市| 淳化县| 泰和县| 砚山县| 获嘉县| 顺义区| 阿鲁科尔沁旗| 榆中县| 德兴市| 陆丰市| 丹巴县| 峨山| 淮阳县| 西乌| 古丈县| 曲阳县| 重庆市| 天镇县| 临漳县| 甘泉县| 巴林左旗| 古田县| 长葛市| 侯马市| 邳州市| 库车县| 秭归县| 肥东县| 平舆县| 湖北省|