• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      C#和.NET中的異常處理機制淺析

      2015-08-08 01:57:17王海燕
      電腦知識與技術(shù) 2015年15期
      關(guān)鍵詞:基類語段代碼

      王海燕

      摘要:異常處理機制是計算機硬件或者是編程語言的的一種方法,是為了處理錯誤信息而提供的一種功能,可以讓用戶更好的理解計算機硬件或者軟件中出現(xiàn)的錯誤代碼,增強了代碼的可讀性,更便于程序員維護以及用戶去閱讀和理解。該文就C#中的異常處理機制進行了介紹,并對C#中捕獲異常的方法和自定義異常進行了分析,使C#程序員更快的理解異常處理方法,使程序的設(shè)計更高效、更健壯、更易于維護。

      關(guān)鍵詞:C#;異常處理;異常類

      中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)15-0202-02

      Abstract: The exception handling mechanism is a kind of method for computer hardware or programming language, a kind of function provided to deal with the wrong information, which can make the user better understand the error code appeared in the computer hardware or software, enhancing the readability of the code is easier for the programmer maintenance and user reading and understanding. The paper introduced the exception handling mechanism in C#, analyzed the method to catch the exception and custom exception in C#, in order to make C# programmer quicker understand the exception handling method, and make the program design more efficient and robust, and it is easier for maintenance.

      Key words: C#; exception handling; exception class

      程序在運行過程中發(fā)生了錯誤,就稱之為“異常”(Exception),它會帶來一些不可預(yù)知的問題。也許是程序崩潰或者是數(shù)據(jù)異常出錯,也可能是數(shù)據(jù)庫中的數(shù)據(jù)被錯誤的修改,嚴重的可能會導(dǎo)致數(shù)據(jù)丟失、系統(tǒng)死機、系統(tǒng)程序損壞等。一般常見的程序設(shè)計語言都已經(jīng)提前設(shè)計好了異常處理模塊以便避免上述情況的發(fā)生。在程序中常用的異常一般有打開一個不存在的文件、訪問斷開連接的網(wǎng)絡(luò)、對象引用為空、數(shù)組下標越界、算法溢出(超出數(shù)值表達范圍)、除數(shù)為零等等。當發(fā)生異常時,程序要能夠處理異常,使其繼續(xù)正常運行。C#的異常處理機制簡單、高效,通過結(jié)構(gòu)化和易控制的方式就能很容易的處理程序執(zhí)行時所發(fā)生的錯誤,找出發(fā)生的原因,尋求解決方法。

      1 C#和.NET中的異常處理

      C#是微軟公司開發(fā)的一種面向?qū)ο蟮?、安全的、穩(wěn)定的、并且代碼簡潔的高級程序設(shè)計語言,它運行于.NET Framework之上,通過使用.NET中的大量類庫來進行編程。在上述提到的各種情況發(fā)生的異常,在.NET中都是屬于對象,它們共有一個異常的基類,這個基類就是System.Exception。當發(fā)生錯誤時,系統(tǒng)或當前正在執(zhí)行的應(yīng)用程序通過引發(fā)包含關(guān)于該錯誤的信息的異常來報告錯誤。異常發(fā)生后,將由該應(yīng)用程序或默認異常處理程序進行處理。在C#中通過關(guān)鍵字throw在發(fā)生錯誤的時候拋出相應(yīng)的異常。在外部程序調(diào)用方法中,主要是通過try...catch...finally這樣的結(jié)構(gòu)來獲取和處理相應(yīng)的異常。在這個結(jié)構(gòu)中,finally語段是可選的。那些可能會拋出需要處理的異常的程序代碼會放在try語段中,被稱之為試圖捕獲異常。而那些對于異常情況出現(xiàn)后進行處理的代碼被放到了之后的catch語段中,它們被稱之為捕獲異常。在catch中,如果不帶參數(shù),將會捕獲所有的異常,如果帶參數(shù),則可以捕獲不同的異常來進行特定的處理。對于程序中可能會出現(xiàn)的不同情況的異常,try語段可以使用多個catch加異常名來進行特定的處理。在這個結(jié)構(gòu)中的finally語段通常放置程序必須要執(zhí)行的代碼,它不會受到程序中的異常處理的影響。在程序的正常執(zhí)行過程中,如果有異常發(fā)生了,try語段內(nèi)導(dǎo)致異常的程序代碼以及之后的代碼都不能被執(zhí)行,程序?qū)?zhí)行有效的catch語段或者是finally語段內(nèi)的代碼。下面我們具體來看這個異常處理結(jié)構(gòu)。

      2 通過使用try...catch...finally結(jié)構(gòu)來處理異常情況

      首先,程序使用FileStream類定義了一個文件流fs并賦了一個空值,然后使用異常處理結(jié)構(gòu)來處理程序,首先在try語句段中指向C:\temp\filedata.txt文件,并使用FileMode.Open參數(shù)打開這個文件,如果文件不存在,將會引發(fā)異常。然后將文件以字節(jié)流的形式讀一行數(shù)據(jù)賦給變量line,最后在控制臺輸出這個變量。在catch語段中,使用FileNotFoundException(路徑不對或未找到文件)參數(shù)來捕獲異常,然后在控制臺輸出“[沒有找到所需的文件] C:\temp\filedata.txt”。對于finally語段來說是可選的,因為無論是否產(chǎn)生異常,它都會被執(zhí)行,在通常情況下,由于在try語段中的代碼執(zhí)行過程中,存在由于發(fā)生了異常情況因而導(dǎo)致程序申請的系統(tǒng)資源無法得到釋放的可能,所以就可以使用finally語段來釋放申請的資源。在這段程序代碼中,如果文件流不為空,最后將關(guān)閉當前文件流并釋放與之關(guān)聯(lián)的所有資源,最后在控制臺輸出"資源釋放完畢!"。

      3 用戶自定義異常

      在C#程序中,可以允許自定義異常類型,用來表示用戶代碼在執(zhí)行過程中不希望發(fā)生的事件,并能為用戶提供更好的理解。由于C#中的異常是以類和對象方式來實現(xiàn)的,所以我們的自定義的異常類就需要繼承C#中異常的基類。在創(chuàng)建自己的異常類時,通常的做法是以“Exception”這個詞作為用戶定義的異常類名來結(jié)尾。

      好了,現(xiàn)在我們來看一個用戶自定義的異常類的基本結(jié)構(gòu)事例:

      上面就是一個簡單的用戶自定義的異常類,它首先繼承自基類Exception,其中有一個私有變量message用于顯示捕獲到錯誤后的提示信息,這個例子中使用了兩個構(gòu)造函數(shù),其中無參的構(gòu)造函數(shù)用于直接顯示錯誤信息,然后還有一個構(gòu)造函數(shù)的重載??梢栽诔绦蛟O(shè)計中對于已知的錯誤直接捕獲后給出msg參數(shù),即一個直觀明了的提示信息。最后對ToString方法進行重載,返回錯誤信息。

      以上我們主要探討了一些異常的基本概念,并分析了C#中的異常結(jié)構(gòu)的構(gòu)成以及工作原理,最后介紹了用戶自定義異常類的實現(xiàn)方法,通過這些方法,可以使用程序更好的做出合理的程序,避免一些程序中不可預(yù)知的或已知錯誤的發(fā)生。

      參考文獻:

      [1] 張聰品, 趙琛, 糜宏斌. 異常處理機制研究[J]. 計算機應(yīng)用研究, 2005(4).

      [2] 閆大順, 姜淑娟, 席景科. 一種異常處理機制的設(shè)計與實現(xiàn)[J]. 計算機工程與設(shè)計, 2006(24).

      [3] 王方良, 湯文成. 基于C++異常處理機制的研究[J]. 計算機技術(shù)與發(fā)展, 2007(1).

      猜你喜歡
      基類語段代碼
      基于C#面向?qū)ο蟪绦蛟O(shè)計的封裝、繼承和多態(tài)分析
      【重點】語言文字運用:語段壓縮
      淺談低年級語段仿寫的指導(dǎo)策略
      創(chuàng)世代碼
      動漫星空(2018年11期)2018-10-26 02:24:02
      創(chuàng)世代碼
      動漫星空(2018年2期)2018-10-26 02:11:00
      創(chuàng)世代碼
      動漫星空(2018年9期)2018-10-26 01:16:48
      創(chuàng)世代碼
      動漫星空(2018年5期)2018-10-26 01:15:02
      空戰(zhàn)游戲設(shè)計實例
      一種基于用戶興趣的STC改進算法
      服裝學報(2015年1期)2015-10-21 01:20:30
      虛機制在《面向?qū)ο蟪绦蛟O(shè)計C++》中的教學方法研究
      江陵县| 巫山县| 桂阳县| 阿图什市| 深泽县| 饶河县| 赣州市| 枝江市| 瓦房店市| 聊城市| 克东县| 台湾省| 金秀| 青川县| 青龙| 隆林| 仁寿县| 施甸县| 黄陵县| 临西县| 天峻县| 策勒县| 边坝县| 馆陶县| 小金县| 贵港市| 鄢陵县| 龙岩市| 芜湖县| 内江市| 姜堰市| 承德县| 聂拉木县| 道孚县| 双牌县| 广饶县| 射阳县| 游戏| 乐东| 井陉县| 林口县|