成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#異常處理機(jī)制初步講解

開發(fā) 后端
今天學(xué)習(xí)了C#異常處理機(jī)制,現(xiàn)將所學(xué)總結(jié)如下,希望本文能對(duì)大家有所幫助。并介紹C#異常處理所用到關(guān)鍵字。

一、C#異常處理機(jī)制所用到關(guān)鍵字

try用于檢查發(fā)生的異常,并幫助發(fā)送任何可能的異常。

catch以控制權(quán)更大的方式處理錯(cuò)誤,可以有多個(gè)catch子句。

finally無(wú)論是否引發(fā)了異常,finally的代碼塊都將被執(zhí)行。

throw用于引發(fā)異常,可引發(fā)預(yù)定義異常和自定義異常。

二、C#異常處理機(jī)制的格式

try 
  •  程序代碼塊; 
  • catch(Exception e) 
  •  異常處理代碼塊; 
  • finally 
  •  無(wú)論是否發(fā)生異常,均要執(zhí)行的代碼塊; 
    1. 三、C#異常處理機(jī)制實(shí)戰(zhàn)

      一個(gè)除數(shù)和零的簡(jiǎn)單例子:

      public class DivisorIsZero 
    2. private static void Main() 
    3. int dividend=10
    4. int divisor1=0int divisor2=5
    5. int DivideValue; try 
    6. DivideValue=dividend/divisor1; //(1) 
    7. //DivideValue=dividend/divisor2; //(2) System.Console.WriteLine("DivideValue={0}",DivideValue);//(3)這一行將不會(huì)被執(zhí)行。 
    8. catch 
    9. System.Console.WriteLine("傳遞過(guò)來(lái)的異常值為:{0}",e); 
    10. finally 
    11. System.Console.WriteLine("無(wú)論是否發(fā)生異常,我都會(huì)顯示。"); 
      1. 注:(1)行被執(zhí)行則會(huì)拋出一個(gè)異常,如果沒(méi)有catch語(yǔ)句,程序會(huì)異常終止,使用不帶參數(shù)的catch子句,則可以捕獲任意類型的異常。

        如果將(1)行注釋掉,啟用(2)行,這意味該程序運(yùn)行時(shí)不會(huì)出現(xiàn)異常,從輸出可知,finally代碼塊仍將被執(zhí)行。

        可以給try語(yǔ)句提供多個(gè)catch語(yǔ)句,以捕獲特定的異常,如上例中:0作為除數(shù)則會(huì)引發(fā)DivideByZeroException類型的異常,上例中的catch語(yǔ)句可以作如下修改:

        catch(DivideByZeroException e) 
      2.  System.Console.WriteLine("零不能作為除數(shù)!異常值為:\n{0}",e); 
      3. catch(Exception e) 
      4.  System.Console.WriteLine("并非\''零作為除數(shù)引發(fā)的異常\"!異常值為:\n{0}",e); 
        1. 為什么還要加上一個(gè)catch(Exceptione)子句呢?原因很簡(jiǎn)單,catch(DivideByZeroExceptione)子句只能捕獲特定的異常,try內(nèi)的程序代碼可能還會(huì)產(chǎn)生其它的異常,這些異常只能由catch(Exceptione)來(lái)捕獲了。

          下表給出了一些常見(jiàn)的異常:

          System名稱空間中常用的異常類

          異常類名稱簡(jiǎn)單描述

          MemberAccessException訪問(wèn)錯(cuò)誤:類型成員不能被訪問(wèn)

          ArgumentException參數(shù)錯(cuò)誤:方法的參數(shù)無(wú)效

          ArgumentNullException參數(shù)為空:給方法傳遞一個(gè)不可接受的空參數(shù)

          ArithmeticException數(shù)學(xué)計(jì)算錯(cuò)誤:由于數(shù)學(xué)運(yùn)算導(dǎo)致的異常,覆蓋面廣。

          ArrayTypeMismatchException數(shù)組類型不匹配

          DivideByZeroException被零除

          FormatException參數(shù)的格式不正確

          IndexOutOfRangeException索引超出范圍,小于0或比***一個(gè)元素的索引還大

          InvalidCastException非法強(qiáng)制轉(zhuǎn)換,在顯式轉(zhuǎn)換失敗時(shí)引發(fā)

          MulticastNotSupportedException不支持的組播:組合兩個(gè)非空委派失敗時(shí)引發(fā)

          NotSupportedException調(diào)用的方法在類中沒(méi)有實(shí)現(xiàn)

          NullReferenceException引用空引用對(duì)象時(shí)引發(fā)

          OutOfMemoryException無(wú)法為新語(yǔ)句分配內(nèi)存時(shí)引發(fā),內(nèi)存不足

          OverflowException溢出

          StackOverflowException棧溢出

          TypeInitializationException錯(cuò)誤的初始化類型:靜態(tài)構(gòu)造函數(shù)有問(wèn)題時(shí)引發(fā)

          NotFiniteNumberException無(wú)限大的值:數(shù)字不合法

          四、定義自己的異常類

          除了預(yù)定義的異常外,我們還可以創(chuàng)建自己的異常,過(guò)程比較簡(jiǎn)單:

          ㈠聲明一個(gè)異常,格式如下:

          classExceptionName:Exception{}

          ㈡引發(fā)自己的異常:

          throw(ExceptionName);

          看一個(gè)例子:

          class IAmSecondGrade:System.Exception{}//聲明異常 
        2. class SecondGrade 
        3. public static int mul(int first,int second) 
        4. if(first>100||second>100) throw new IAmSecondGrade();//引發(fā)異常 
        5. return (first*second); 
        6. public static void Main() 
        7. int mul_value; try 
        8. mulmul_value=mul(99,56); 
        9. System.Console.WriteLine("99與56積為:{0}",mul_value); mulmul_value=mul(101,4); 
        10. System.Console.WriteLine("出現(xiàn)異常,這行是不會(huì)被執(zhí)行的。"); 
        11. catch(IAmSecondGrade)//捕獲自定義的異常 
        12. System.Console.WriteLine("我才上二年級(jí),超過(guò)100的乘法我不會(huì)。嘿嘿,我自定義的異常。"); 
        13. catch(System.Exception e) 
        14. System.Console.WriteLine("非自定義異常。其值為:{0}",e); 
          1. 今天學(xué)習(xí)了一些異常處理的重要特性,還有許多其它的特性,有待以后努力

            【編輯推薦】

            1. 強(qiáng)類型和Actor:ActorLite的演示
            2. C#的Tag Message回顧:繁瑣而危險(xiǎn)
            3. Erlang的Actor回顧:將消息轉(zhuǎn)化為邏輯執(zhí)行
            4. Actor模型的本質(zhì):究竟是要解決什么問(wèn)題
            5. 順暢的使用C# Actor:另一個(gè)解決方案
            責(zé)任編輯:彭凡 來(lái)源: wangchao.net.
            相關(guān)推薦

            2011-03-17 09:20:05

            異常處理機(jī)制

            2009-09-02 18:34:28

            C#鼠標(biāo)事件

            2011-07-21 15:20:41

            java異常處理機(jī)制

            2015-12-28 11:25:51

            C++異常處理機(jī)制

            2021-07-03 17:53:52

            Java異常處理機(jī)制

            2011-04-06 10:27:46

            Java異常處理

            2010-03-05 15:40:16

            Python異常

            2024-03-04 10:00:35

            數(shù)據(jù)庫(kù)處理機(jī)制

            2021-03-25 07:44:39

            C++異常處理開發(fā)技術(shù)

            2023-03-08 08:54:59

            SpringMVCJava

            2023-06-15 14:09:00

            解析器Servlet容器

            2009-08-06 15:12:22

            C#異常機(jī)制

            2009-08-06 14:08:08

            C#語(yǔ)言異常處理

            2009-08-31 17:26:32

            C#異常處理

            2021-03-02 09:12:25

            Java異常機(jī)制

            2023-02-23 08:15:33

            Spring異常處理機(jī)制

            2011-07-01 14:20:59

            Qt 事件

            2011-07-01 14:14:34

            Qt 事件

            2009-08-05 18:28:05

            C#異常處理

            2024-02-27 10:48:16

            C++代碼開發(fā)
            點(diǎn)贊
            收藏

            51CTO技術(shù)棧公眾號(hào)

            主站蜘蛛池模板: 亚洲一区网站 | 久久不射电影网 | 国产无人区一区二区三区 | 午夜日韩 | 亚洲va国产日韩欧美精品色婷婷 | 成人a在线观看 | 久久久一区二区三区 | 色在线免费视频 | 亚洲看片网站 | 日韩欧美二区 | www.亚洲免费 | 久久爆操 | 中文字幕在线中文 | 日韩欧美在线一区二区 | 中文字幕视频在线观看 | 91操操操| 免费激情网站 | 自拍 亚洲 欧美 老师 丝袜 | 欧美一区免费 | 黄色片在线网站 | 国产精品免费观看 | 日韩精品中文字幕在线 | 成人黄色av | 国产女人叫床高潮大片免费 | 国产精品久久久亚洲 | 蜜臀久久99精品久久久久久宅男 | 国产综合久久久久久鬼色 | 中文字幕三区 | 成人免费观看男女羞羞视频 | 91国产在线播放 | 国产精品久久久久久久久久 | 国产亚洲欧美在线 | 99亚洲精品 | 在线不卡视频 | 91偷拍精品一区二区三区 | 91精品国产一区二区三区蜜臀 | 毛片a级 | 日韩视频中文字幕 | 亚洲精品欧洲 | 日韩91 | 91av在线免费观看 |