国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

.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)行中的有些錯(cuò)誤是可以預(yù)料但不可避免的,比如內(nèi)存空間不足、硬盤文件被移動、打印機(jī)未連接好、數(shù)組越界、文件找不到等。這類錯(cuò)誤大都由外部環(huán)境或偶發(fā)性因素造成。而且程序還有語法錯(cuò)誤、運(yùn)行時(shí)(Run Time)錯(cuò)誤和邏輯錯(cuò)誤等各種錯(cuò)誤源。特別是運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤,即使采用軟件測試方法進(jìn)行嚴(yán)格測試也不可能完全排除掉。如網(wǎng)絡(luò)訪問異常中斷、文件訪問出錯(cuò)、被除數(shù)為零等。為了防止發(fā)生上述錯(cuò)誤,必須在程序開發(fā)與運(yùn)行過程中引入異常處理機(jī)制,并對異常進(jìn)行監(jiān)視、處理。當(dāng)發(fā)生異常時(shí),程序必須能及時(shí)捕獲異常,正確處理異常,并采用容錯(cuò)機(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ī)制、錯(cuò)誤定義完全一致。一個(gè)在Visual C++開發(fā)環(huán)境引發(fā)的異??梢栽赩isual Studio C#或Visual Studio J++開發(fā)環(huán)境中得到處理。同時(shí)Visual Studio.Net平臺也吸取了Java在處理程序異常時(shí)所采取的程序結(jié)構(gòu)和語法特點(diǎn)。在Visual Studio.Net平臺下,異常被分為標(biāo)準(zhǔn)異常和自定義異常,其中自定義異常為用戶提供了能靈活實(shí)現(xiàn)容錯(cuò)功能的手段。標(biāo)準(zhǔn)異常和自定義異常的處理機(jī)制使軟件運(yùn)行更加健壯,軟件指令更清晰,結(jié)構(gòu)更簡潔,可讀性更強(qiáng)。

1.1 異常的產(chǎn)生

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

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

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

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

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

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ù)類型錯(cuò)誤的異常;Index Out Of Exception類,用于處理數(shù)組下表越界異常;Rank Exception類,用于處理數(shù)組維數(shù)錯(cuò)誤異常)。

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

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

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

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

2.2 自定義異常類

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

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

(1)聲明可序列化;

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

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

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

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

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

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

筆者在軟件項(xiàng)目開發(fā)過程中,經(jīng)常遇到數(shù)據(jù)庫編號重復(fù)之類的錯(cuò)誤,為了保證軟件的健壯性,此時(shí)引入異常非常必要。本文構(gòu)造了一個(gè)通用的異常處理界面,利用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è)異常處理構(gòu)造函數(shù),通過base指令,使Northwind Custom Exception構(gòu)造函數(shù)繼承自Visual Studio.Net平臺的標(biāo)準(zhǔn)異常類ApplicationException。第二種構(gòu)造函數(shù)提供了兩個(gè)參數(shù),一個(gè)參數(shù)用來定義和處理異常消息,另一個(gè)參數(shù)用來定義和處理異常錯(cuò)誤。

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

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

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)化一個(gè)“數(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稀疏矩陣算法
基于C#面向?qū)ο蟪绦蛟O(shè)計(jì)的封裝、繼承和多態(tài)分析
JAVA玩轉(zhuǎn)數(shù)學(xué)之二維數(shù)組排序
創(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è)計(jì)實(shí)例
一種基于用戶興趣的STC改進(jìn)算法
虛機(jī)制在《面向?qū)ο蟪绦蛟O(shè)計(jì)C++》中的教學(xué)方法研究
剑川县| 临夏县| 崇明县| 海伦市| 葵青区| 湾仔区| 射洪县| 汤阴县| 临汾市| 牟定县| 建瓯市| 仁怀市| 大同市| 建始县| 贵南县| 厦门市| 漯河市| 安化县| 赣州市| 漳浦县| 涪陵区| 灵山县| 响水县| 林西县| 阜康市| 凤山县| 东乡县| 墨江| 绥阳县| 化州市| 岱山县| 富平县| 资阳市| 蒙城县| 钦州市| 高碑店市| 桃江县| 内丘县| 平定县| 奈曼旗| 灵寿县|