• 
    

    
    

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

      .Net平臺下的異常處理與異常應(yīng)用研究

      2013-05-11 00:49:34歐陽艷階
      關(guān)鍵詞:基類數(shù)組代碼

      歐陽艷階,張 明

      (十堰職業(yè)技術(shù)學(xué)院 信息與智能工程系,湖北 十堰 442000)

      0 引言

      即使是經(jīng)驗(yàn)豐富的軟件工程師,也不可能開發(fā)出絕對完善的應(yīng)用程序,因?yàn)槌绦蜻\(yùn)行中的有些錯誤是可以預(yù)料但不可避免的,比如內(nèi)存空間不足、硬盤文件被移動、打印機(jī)未連接好、數(shù)組越界、文件找不到等。這類錯誤大都由外部環(huán)境或偶發(fā)性因素造成。而且程序還有語法錯誤、運(yùn)行時(Run Time)錯誤和邏輯錯誤等各種錯誤源。特別是運(yùn)行時錯誤和邏輯錯誤,即使采用軟件測試方法進(jìn)行嚴(yán)格測試也不可能完全排除掉。如網(wǎng)絡(luò)訪問異常中斷、文件訪問出錯、被除數(shù)為零等。為了防止發(fā)生上述錯誤,必須在程序開發(fā)與運(yùn)行過程中引入異常處理機(jī)制,并對異常進(jìn)行監(jiān)視、處理。當(dāng)發(fā)生異常時,程序必須能及時捕獲異常,正確處理異常,并采用容錯機(jī)制消除異常,而不是中斷軟件運(yùn)行或直接退出。

      1 Visual Studio.Net平臺異常處理機(jī)制

      在應(yīng)用程序開發(fā)過程中,Visual Studio.Net平臺為我們提供了嚴(yán)密的異常捕獲機(jī)制,使應(yīng)用程序能夠健壯地運(yùn)行。Visual Studio.Net平臺的異常處理是跨語言和標(biāo)準(zhǔn)化的,即異常與語言無關(guān),其結(jié)構(gòu)、原理、運(yùn)行機(jī)制、錯誤定義完全一致。一個在Visual C++開發(fā)環(huán)境引發(fā)的異??梢栽赩isual Studio C?;騐isual Studio J++開發(fā)環(huán)境中得到處理。同時Visual Studio.Net平臺也吸取了Java在處理程序異常時所采取的程序結(jié)構(gòu)和語法特點(diǎn)。在Visual Studio.Net平臺下,異常被分為標(biāo)準(zhǔn)異常和自定義異常,其中自定義異常為用戶提供了能靈活實(shí)現(xiàn)容錯功能的手段。標(biāo)準(zhǔn)異常和自定義異常的處理機(jī)制使軟件運(yùn)行更加健壯,軟件指令更清晰,結(jié)構(gòu)更簡潔,可讀性更強(qiáng)。

      1.1 異常的產(chǎn)生

      當(dāng)應(yīng)用程序遇到異常情況(如被零除、文件無法訪問、網(wǎng)絡(luò)中斷、數(shù)組訪問越界等)時,異常就會自動產(chǎn)生。此時Visual Studio.Net異常處理機(jī)制會自動轉(zhuǎn)移到已經(jīng)定義好的異常處理程序(軟件開發(fā)過程中定義的容錯代碼)。遺憾的是很多軟件在開發(fā)過程中容錯功能不夠完善,導(dǎo)致容錯代碼缺失或容錯代碼不完善,此時異常處理程序?qū)⑼V箞?zhí)行或執(zhí)行存在問題的容錯代碼。

      1.2 異常發(fā)生后的容錯處理

      Visual Studio.Net采用Try{}Catch{}Finally{}的語法結(jié)構(gòu)進(jìn)行異常處理。軟件開發(fā)過程中定義的功能代碼放在Try{}模塊部分,容錯代碼放在Catch{}部分,最后必須執(zhí)行的代碼放在Finally{}模塊部分。軟件首先嘗試運(yùn)行Try{}結(jié)構(gòu)部分的指令,若此時發(fā)生異常,則由Catch{}結(jié)構(gòu)部分進(jìn)行捕獲,并執(zhí)行該部分的容錯代碼。也可直接定義throw關(guān)鍵字代碼,并顯式直接拋出異常。

      1.3 異常處理的結(jié)束工作

      無論Catch{}模塊能否捕獲異常,F(xiàn)inally{}模塊部分都是必須執(zhí)行的部分,這種設(shè)計也為通用的容錯功能提供了便利。比如程序員可以將一些釋放資源之類的指令、常見的錯誤處理代碼、關(guān)閉對象的代碼等放在此模塊,進(jìn)行通用的容錯處理。

      2 標(biāo)準(zhǔn)異常類與自定義異常類

      在Visual Studio.NET平臺下,異常類分標(biāo)準(zhǔn)異常類和自定義異常類。異常類System.Exception派生自所有類的基類System.Object。Visual Studio.NET中已經(jīng)定義好的異常類(如:Application Exception、SystemException等)均派生自System.Exception類,這些由Visual Studio.NET平臺定義的類稱為標(biāo)準(zhǔn)異常類。還有一些類派生自Application Exception類,是由用戶、中間件企業(yè)等第三方定義的異常類我們稱它們?yōu)樽远x異常類。

      2.1 Visual Studio.NET平臺重要的幾類標(biāo)準(zhǔn)異常類

      Visual Studio.NET平臺中重要的幾類標(biāo)準(zhǔn)異常類按其作用的不同可分為[1]:

      (1)用于定義標(biāo)準(zhǔn)異常類和自定義異常類的基類(包括Exception,該類是所有標(biāo)準(zhǔn)異常類的基類;System Exception類,該類是System命名空間中所有其他異常類的基類,主要用于定義自定義異常類)。

      (2)與數(shù)組相關(guān)的異常(包括Array Type Mismatch Exception類,用于處理數(shù)組中存儲數(shù)據(jù)類型錯誤的異常;Index Out Of Exception類,用于處理數(shù)組下表越界異常;Rank Exception類,用于處理數(shù)組維數(shù)錯誤異常)。

      (3)與異常參數(shù)相關(guān)的異常類(包括Format Exception類,用于處理異常參數(shù)格式錯誤的異常;Argument Exception類,用于處理異常參數(shù)無效的異常)。

      (4)與算術(shù)相關(guān)的異常(包括Arithmetic Exception類,用于處理除零而引發(fā)的異常)。

      (5)與成員訪問相關(guān)的異常(包括Member Access Exception類,用于處理訪問成員失敗時的異常)。

      (6)與輸入輸出相關(guān)的異常(包括IOException類,用于處理進(jìn)行文件輸入輸出操作時所引發(fā)的異常)。

      2.2 自定義異常類

      如果系統(tǒng)提供的異常類不能滿足軟件的需要或不能與程序中的異常相匹配,就需要程序員自定義異常類。自定義異常類的語法如下:class自定義異常類名稱名:基類異常名稱

      創(chuàng)建自定義異常類應(yīng)嚴(yán)格遵循幾個原則:

      (1)聲明可序列化;

      (2)添加一個默認(rèn)的構(gòu)造函數(shù);

      (3)添加包含Message的構(gòu)造函數(shù);

      (4)添加一個包含Message,及內(nèi)部異常類型參數(shù)的構(gòu)造函數(shù);

      (5)添加一個序列化信息相關(guān)參數(shù)的構(gòu)造函數(shù)。

      同時自定義異常時必須自定義異常的編碼規(guī)則,將異常類命名為以單詞“Exception”結(jié)尾,如Word Process Exception,User Info Exception 等。還要考慮出現(xiàn)異常時的提示信息,即設(shè)置異常類的Message屬性,可以使用構(gòu)造函數(shù)繼承來自基類的Message屬性。

      3 自定義異常類在軟件項(xiàng)目開發(fā)中的實(shí)例應(yīng)用與優(yōu)化

      筆者在軟件項(xiàng)目開發(fā)過程中,經(jīng)常遇到數(shù)據(jù)庫編號重復(fù)之類的錯誤,為了保證軟件的健壯性,此時引入異常非常必要。本文構(gòu)造了一個通用的異常處理界面,利用SQL Server或Microsoft Access系統(tǒng)中的示例數(shù)據(jù)庫Northwind,通過文本框控件Text-Box向Northwind數(shù)據(jù)庫中的Customer表添加一條記錄,如果Customer ID出現(xiàn)重復(fù)記錄,則立即啟動異常處理機(jī)制,拋出相應(yīng)的異常信息。其開發(fā)思想及代碼如下:

      3.1 定義自定義異常類的基類

      該自定義異常類定義了兩個異常處理構(gòu)造函數(shù),通過base指令,使Northwind Custom Exception構(gòu)造函數(shù)繼承自Visual Studio.Net平臺的標(biāo)準(zhǔn)異常類ApplicationException。第二種構(gòu)造函數(shù)提供了兩個參數(shù),一個參數(shù)用來定義和處理異常消息,另一個參數(shù)用來定義和處理異常錯誤。

      在本實(shí)例應(yīng)用中,還需聲明一個處理自定義異常錯誤的錯誤處理類。在不同類型的軟件運(yùn)行環(huán)境下,容錯程序可以根據(jù)偶發(fā)事件捕獲不同的異常處理類,并進(jìn)行不同的錯誤處理。

      在應(yīng)用程序運(yùn)行過程中,當(dāng)異常類的觸發(fā)條件滿足時,自定義的異常處理程序就會做出一系列的錯誤處理動作,并拋出異常信息,讓程序員或用戶做出相應(yīng)的處理,如:提供環(huán)境變量信息,記載錯誤并保存、進(jìn)行容錯處理等。

      3.2 在Visual Studio.Net平臺下使用自定義的異常類插入Custom表記錄

      4 結(jié)束語

      異常處理機(jī)制是一種安全高效的編程策略,是開發(fā)應(yīng)用軟件必不可少的部分。將異常處理巧妙地運(yùn)用到程序中,可以提高程序的穩(wěn)定性、健壯性和安全性,是開發(fā)應(yīng)用程序必須考慮的重要內(nèi)容。但在應(yīng)用程序開發(fā)初期往往容易被忽略。

      本文中詳細(xì)介紹了Visual Studio.Net平臺下的異常及異常處理機(jī)制,給出了如何自定義并優(yōu)化一個“數(shù)據(jù)庫編號重復(fù)”類的異常實(shí)例,詳細(xì)解析了異常處理過程和異常發(fā)生后可以采取的各種處理方式。本文在Visual Studio 2008,SQL Server 2005環(huán)境下調(diào)試通過。

      [1]劉彥博,等.Visual Studio技術(shù)大全[M].北京:人民郵電出版社,2009:102-112.

      [2]曾建華.Visual Studio 2010(C#)Windows數(shù)據(jù)庫項(xiàng)目開發(fā)[M].北京:電子工業(yè)出版社,2012:105-107.

      猜你喜歡
      基類數(shù)組代碼
      JAVA稀疏矩陣算法
      電腦報(2022年13期)2022-04-12 00:32:38
      基于C#面向?qū)ο蟪绦蛟O(shè)計的封裝、繼承和多態(tài)分析
      JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
      電腦報(2020年24期)2020-07-15 06:12:41
      創(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è)計實(shí)例
      一種基于用戶興趣的STC改進(jìn)算法
      虛機(jī)制在《面向?qū)ο蟪绦蛟O(shè)計C++》中的教學(xué)方法研究
      镇宁| 五指山市| 博湖县| 历史| 石泉县| 衡水市| 万载县| 桃源县| 荥阳市| 登封市| 新巴尔虎左旗| 舟山市| 阳谷县| 汝阳县| 闵行区| 西乌珠穆沁旗| 葵青区| 崇信县| 剑川县| 乐昌市| 鲁山县| 手机| 双柏县| 深圳市| 奉新县| 同德县| 合川市| 高唐县| 白朗县| 揭西县| 金湖县| 青海省| 松溪县| 洛南县| 石林| 漯河市| 宜宾县| 南康市| 哈密市| 枣庄市| 广安市|