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

C#各種異常處理方式總結(jié)

 更新時(shí)間:2022年08月27日 11:20:58   作者:Darren?Ji  
這篇文章介紹了C#各種異常的處理方式,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

.NET的異常處理機(jī)制用來發(fā)現(xiàn)、處理運(yùn)行時(shí)錯(cuò)誤。如果開發(fā)人員沒有提供異常的處理機(jī)制,就默認(rèn)采用.NET的機(jī)制。

通常使用try...catch...finally捕獲異常。

try
{
    //有可能發(fā)生異常
}
catch(Exception ex)
{
    //處理異常
}
finally
{
    //清理
}
  • 如果沒有異常發(fā)生,就直接到finally語句塊中。
  • finally語句塊是必須執(zhí)行的
  • 這里的catch和finally語句塊是可選的。try語句塊后面可以跟1個(gè)或多個(gè)catch語句塊,try語句塊后面可以直接跟finally語句塊。
  • Exception是所有異常的基類

使用.NET默認(rèn)異常處理機(jī)制捕獲異常

    class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int result = 100/a;
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }

使用try...catch手動(dòng)捕獲異常

    class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int result = 0;
            try
            {
                result = 100/a;
                Console.WriteLine("這里不會(huì)執(zhí)行");
            }
            catch (DivideByZeroException exception)
            {
                Console.WriteLine("出現(xiàn)異常");
            }
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }

使用try...catch...finally手動(dòng)捕獲異常

   class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int result = 0;
            try
            {
                result = 100/a;
                Console.WriteLine("這里不會(huì)執(zhí)行");
            }
            catch (DivideByZeroException exception)
            {
                Console.WriteLine("出現(xiàn)異常");
            }
            finally
            {
                Console.WriteLine("放行吧,肯定會(huì)執(zhí)行到我這里的~~");
            }
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }

可見,finally語句塊中的內(nèi)容一定會(huì)被執(zhí)行。

使用try...多個(gè)catch...finally手動(dòng)捕獲異常

    class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int result = 0;
            try
            {
                result = 100/a;
                Console.WriteLine("這里不會(huì)執(zhí)行");
            }
            catch (DivideByZeroException exception)
            {
                Console.WriteLine("不能被0除的異常");
            }
            catch (Exception ex)
            {
                Console.WriteLine("異常");
            }
            finally
            {
                Console.WriteLine("放行吧,肯定會(huì)執(zhí)行到我這里的~~");
            }
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }

可見,只要有一個(gè)catch語句塊捕獲到異常,其它c(diǎn)atch語句塊不執(zhí)行。

使用try...catch(不帶括號(hào),不帶參數(shù))手動(dòng)捕獲異常

    class Program
    {
        static void Main(string[] args)
        {
            int a = 0;
            int result = 0;
            try
            {
                result = 100/a;
                Console.WriteLine("這里不會(huì)執(zhí)行");
            }
            catch
            {
                Console.WriteLine("異常");
            }
            Console.WriteLine(result);
            Console.ReadKey();
        }
    }

通過以上方法,可以捕獲任何異常。

try...catch手動(dòng)捕獲拋出的異常

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                throw new DivideByZeroException("除數(shù)不能為零");
            }
            catch (DivideByZeroException e)
            {
                Console.WriteLine("異常");
            }
            Console.WriteLine("最后想說的");
            Console.ReadKey();
        }
    }

拋出異常本身并沒有顯示。

較高層次上下文捕獲較低拋出的異常

   class Program
    {
        static void Main(string[] args)
        {
            Calculate c = new Calculate();
            try
            {
                c.Divide();
            }
            catch (Exception e)
            {
                Console.WriteLine("捕獲異常");
            }
            Console.WriteLine("最后想說的");
            Console.ReadKey();
        }
    }
    public class Calculate
    {
        public void Divide()
        {
            try
            {
                int a = 0;
                int result = 100/a;
            }
            catch (DivideByZeroException e)
            {
                throw;
            }
        }
    }

在Calculate內(nèi)部拋出的異常,被更高層次的客戶端捕獲。

自定義異常

   class Program
    {
        static void Main(string[] args)
        {
            try
            {
                throw new MyException("i am exception");
            }
            catch (Exception e)
            {
                Console.WriteLine("捕獲到自定義異常了~~");
            }
            Console.WriteLine("最后想說的");
            Console.ReadKey();
        }
    }
    public class MyException : Exception
    {
        public MyException(string str)
        {
            Console.WriteLine("這是我自定義的異常:" + str);
        }
    }

總結(jié):

  • .NET異常處理并不是標(biāo)準(zhǔn)的try...catch...finally,可以是很靈活的。
  • 盡量在較低層次拋異常,在較高層次捕獲異常。

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接

相關(guān)文章

  • WPF綁定實(shí)例詳解

    WPF綁定實(shí)例詳解

    這篇文章主要介紹了WPF綁定的用法,包括了WPF綁定控件及非控件對(duì)象的用法,以及各類參數(shù)的詳細(xì)用法,需要的朋友可以參考下
    2014-09-09
  • C#在驗(yàn)證文件共享模式下實(shí)現(xiàn)多線程文件寫入

    C#在驗(yàn)證文件共享模式下實(shí)現(xiàn)多線程文件寫入

    這篇文章主要為大家詳細(xì)介紹了C#在驗(yàn)證文件共享模式下實(shí)現(xiàn)多線程文件寫入的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下
    2024-01-01
  • c#使用Dataset讀取XML文件動(dòng)態(tài)生成菜單的方法

    c#使用Dataset讀取XML文件動(dòng)態(tài)生成菜單的方法

    這篇文章主要介紹了c#使用Dataset讀取XML文件動(dòng)態(tài)生成菜單的方法,涉及C#使用Dataset操作XML文件的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • C#漢字轉(zhuǎn)拼音實(shí)例(支持多音字)

    C#漢字轉(zhuǎn)拼音實(shí)例(支持多音字)

    幾年前就在網(wǎng)上看到過漢字轉(zhuǎn)拼音的程序,大都就是按漢字的編碼轉(zhuǎn)換,單字對(duì)應(yīng)的算法實(shí)現(xiàn)的。但是都有一個(gè)共同的缺點(diǎn),不能支持多音字。本篇文章主要介紹了C#漢字轉(zhuǎn)拼音實(shí)例(支持多音字),有興趣的可以了解一下。
    2016-12-12
  • 如何在C#中集成Lua腳本

    如何在C#中集成Lua腳本

    這篇文章主要介紹了如何在C#中集成Lua腳本,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#小程序15位轉(zhuǎn)18位身份證號(hào)代碼

    C#小程序15位轉(zhuǎn)18位身份證號(hào)代碼

    現(xiàn)在我們使用的都是18位身份證號(hào),而以前都是15位身份證號(hào),而如何將15位身份證號(hào)轉(zhuǎn)18位身份證號(hào)轉(zhuǎn)換為18位身份證號(hào)呢?
    2013-02-02
  • C#中Dictionary類使用實(shí)例

    C#中Dictionary類使用實(shí)例

    這篇文章主要介紹了C#中Dictionary類使用實(shí)例,本文直接給出一個(gè)使用實(shí)例,包含一些Dictionary的基本用法,需要的朋友可以參考下
    2015-06-06
  • 詳談C++引用&和指針在作為形參時(shí)的區(qū)別

    詳談C++引用&和指針在作為形參時(shí)的區(qū)別

    下面小編就為大家?guī)硪黄斦凜++引用&和指針在作為形參時(shí)的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • 關(guān)于C#程序優(yōu)化的五十種方法

    關(guān)于C#程序優(yōu)化的五十種方法

    這篇文章主要介紹了C#程序優(yōu)化的五十個(gè)需要注意的地方,使用c#開發(fā)的朋友可以看下
    2013-09-09
  • C#實(shí)現(xiàn)將Excel表格轉(zhuǎn)換為圖片(JPG/?PNG)

    C#實(shí)現(xiàn)將Excel表格轉(zhuǎn)換為圖片(JPG/?PNG)

    Excel表格可能會(huì)因?yàn)椴煌O(shè)備或字體缺失等問題,導(dǎo)致格式錯(cuò)亂或數(shù)據(jù)顯示異常,轉(zhuǎn)換為圖片后,能確保數(shù)據(jù)的排版等保持一致,下面我們看看如何使用C#實(shí)現(xiàn)將Excel表格轉(zhuǎn)換為圖片吧
    2025-04-04

最新評(píng)論

蓬溪县| 来安县| 鄂托克旗| 浙江省| 扶绥县| 福海县| 福贡县| 尼勒克县| 青川县| 且末县| 杭锦后旗| 古交市| 门头沟区| 资溪县| 盐津县| 韶关市| 沐川县| 嫩江县| 亳州市| 二连浩特市| 洛浦县| 巴林左旗| 屏边| 延边| 祁连县| 武山县| 怀化市| 宁蒗| 陆川县| 罗定市| 弥渡县| 华蓥市| 邹城市| 南和县| 门头沟区| 长岛县| 朝阳区| 潢川县| 土默特左旗| 类乌齐县| 屏山县|