999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

VB.NET異常處理技術淺析

2007-12-31 00:00:00楊志獻
成才之路 2007年26期

摘要:本文主要探討了VB.NET中錯誤與異常的概念,結合Error對象和Exception對象的使用描述常用的異常處理技術,并結合VB.NET程序代碼對非結構化和結構化異常處理進行比較總結。

關鍵詞:VB.NET;程序錯誤與異常;異常處理技術

1. 錯誤與異常概述

在使用VB.NET開發程序軟件的過程中,隨著程序代碼的增長,在程序中不可避免地會產生一些錯誤,這些錯誤一般可以分為三類:語法錯誤、邏輯錯誤和運行時錯誤。

(1)語法錯誤:這類錯誤最容易發現,VS.NET會在包含錯誤的代碼下面使用波浪線標志錯誤,提示程序員語法錯誤發生的地點,并給出錯誤原因的相關信息,而且錯誤信息會在“任務列表”窗口中顯示出來。

(2)邏輯錯誤:這類錯誤是指程序運行正常但產生的結果卻和預期的不一樣。這類錯誤往往是由于程序員的邏輯思維混淆所導致的。

(3)運行時錯誤:這類錯誤往往是程序試圖執行的操作由于某些原因不可能被執行,例如當用戶試圖去打開一個不存在的文件,或者試圖去將一個字符類型的數據輸入到數據庫中一個非字符類型的字段中。

上述錯誤是指在程序執行代碼過程中發生的事件,在NET框架中錯誤的產生將中斷程序代碼的正常流程,并創建一個異常對象來表示這個錯誤。當錯誤中斷程序流程時,該程序將嘗試尋找異常處理程序(一段告訴程序如何對錯誤做出響應的代碼),以幫助程序恢復流程。從這里可以看出:錯誤是一個事件,而異常是該事件創建的對象;在異常產生時,異常處理程序能捕獲異常并進行相應的操作,以增加程序運行的穩定性和可靠性。

在VB.NET中有兩種異常處理技術:第一種是非結構化異常處理技術,它是早期VB版本中的異常處理技術,在非結構化異常處理中,代碼開始處的On Error 語句將處理所有的異常。第二種是結構化異常處理技術,類似于C#中的異常處理方式,它使用包含異常、單獨的代碼塊和篩選器的控制結構創建異常處理機制。它使代碼可以區分不同的錯誤類別,并根據相應的情況做出響應。與非結構化異常處理技術相比,結構化異常處理技術更強大,更具普遍性和靈活性。

2. 異常處理的方法

(1)非結構化異常處理。非結構化異常處理主要通過Err對象和以下語句來實現:On Error、Resume 和Err對象。On Error 語句用于創建單個異常處理程序以捕捉發生的所有異常,但一次只能有一個處理程序。此方法可以跟蹤最近產生的異常和最近的異常處理程序的位置。在On Error開始時,Err對象被設置為Nothing。在程序運行過程中產生錯誤時Err對象被賦值,如果有多個錯誤產生,Err對象屬性的值僅由剛剛發生的錯誤決定。每次在錯誤處理例程中發生Exit Sub、Exit Function、Exit Property、Resume 或Resume Next 語句時,Err 對象的屬性都將重置為零或零長度字符串。而在錯誤處理例程外部使用上述任何語句都不會重置其屬性。如果確實需要重置屬性,可以使用Clear方法重置Err對象。

(2)結構化異常處理。在VB.NET中使用Try、Catch、Finally關鍵字提供結構化異常處理功能。在Try代碼塊中包含可能產生異常的代碼段,它還可以和一個或多個Catch子句配合使用。這些Catch子句主要用來過濾異常并將它們和對應異常處理代碼建立關聯。最后無論在Try代碼塊中是否發生異常,Finally 語句所包含的代碼始終會被執行,即使在Exit Try語句后也會執行Finally語句。Finally語句塊通常執行清除任務,例如文件的關閉或解除對數據庫中表的鎖定等。

Catch子句可以采用三種格式:Catch、Catch...As 和Catch...When。Catch...As 和Catch...When 子句用于捕獲特定的異常,并在后面的語句塊中進行異常處理。VB.NET按照Catch...As(When)子句的順序把當前捕獲的異常類型和Catch...As(When)子句中列出的所有異常逐一進行比較,直到找到一個相匹配的。如果在所有的Catch...As(When)子句中沒有找到匹配的異常類型,最后將執行不包含as(When)的Catch子句。也就是說最后這個Catch子句可以捕獲所有的異常。需要注意的是:當使用多個Catch...As(When)子句捕獲異常時,所有的Catch...As(When)子句都是按出現的先后順序依次進行匹配,所以應該根據異常對象的層次結構,將低級別的異常放在Catch...As(When)子句的最前面,然后才是通用的異常,最后是不包含as(When)的Catch子句。

(3)創建自定義的異常。在VB.NET中可以通過從Application.Exception類中繼承,來創建自己的應用程序異常類。建議異常類的名稱以Exception結尾。

3. 非結構化和結構化異常處理技術對比

在使用非結構化異常技術處理異常時,可能產生程序代碼執行的跳轉,而且在非結構化異常處理中使用Err對象僅能獲得最近產生的錯誤信息,但代碼在執行過程中可能不只產生一處錯誤,從而使得已經發生的錯誤信息丟失。結構化異常處理技術采用Try...Catch...Finally控制結構作為結構化異常處理的基本結構,在處理異常時不會產生跳轉。而且可以根據所產生的異常類型的不同分別做出不同的處理。通常情況下,結構化異常處理技術提供了能夠更加靈活地處理錯誤的功能,在實際中得到廣泛應用。但在少數情況下仍然可能需要使用非結構化異常處理。

從上述對結構化和非結構化異常處理技術的描述,可以看出,結構化異常處理的功能比非結構化異常處理的功能更強大。需要注意的是由于拋出和捕獲異常會增加應用程序的負荷,因此,在確保異常得到處理的同時,不要過多地列舉異常,否則會導致程序性能下降。另外當可以肯定地知道代碼在此處會出現什么錯誤時可以使用if...else...進行處理。例如:檢測用戶輸入數據的類型等。在不能確定程序代碼會在什么位置出現什么類型的錯誤時,使用Try...Catch可以對錯誤進行有效地處理,提高程序的健壯性。例如:I/O操作等。

參考文獻:

[1] Microsoft.VB.NET程序設計語言【M】.高等教育出版社,2003.

[2] Fred Barwell VB.NET高級編程.清華大學出版社,2002.

主站蜘蛛池模板: 国产精品99在线观看| 亚洲国产亚综合在线区| 亚洲综合极品香蕉久久网| 午夜啪啪福利| 婷婷午夜天| 少妇极品熟妇人妻专区视频| 日韩成人在线网站| 久久精品无码国产一区二区三区 | 亚洲色欲色欲www在线观看| 一级毛片免费不卡在线| 中文字幕在线看| 波多野结衣一区二区三区AV| 激情爆乳一区二区| 在线观看av永久| 日韩欧美国产成人| 国产原创自拍不卡第一页| 国内精品伊人久久久久7777人 | 天堂网国产| 久久伊人色| 色色中文字幕| 91成人在线观看视频| 国产欧美视频在线| 欧类av怡春院| www.av男人.com| 精品国产污污免费网站| 亚洲中文字幕97久久精品少妇| 国产三级视频网站| 国内99精品激情视频精品| 日本高清在线看免费观看| 凹凸国产熟女精品视频| 国产肉感大码AV无码| 亚洲区视频在线观看| 精品一区二区三区自慰喷水| 香蕉伊思人视频| 91福利一区二区三区| 久久久久免费看成人影片| 亚洲精品无码av中文字幕| 亚洲精品国偷自产在线91正片| 中文成人在线视频| 国产精品久久久精品三级| 国产白浆一区二区三区视频在线| 在线免费不卡视频| 久久综合九九亚洲一区| 国产91九色在线播放| 亚洲成人精品在线| 欧美福利在线播放| 久久精品人人做人人爽| 一级毛片a女人刺激视频免费| 成AV人片一区二区三区久久| 久久久久无码国产精品不卡| 亚洲av无码久久无遮挡| 粗大猛烈进出高潮视频无码| 国产乱子伦视频三区| 91视频99| 婷婷五月在线视频| 波多野结衣一区二区三区四区视频 | 亚洲成a人片77777在线播放| 国内老司机精品视频在线播出| 国产精品护士| 久久午夜影院| 免费A∨中文乱码专区| 一级毛片免费的| 天天色天天操综合网| 99re在线免费视频| 国产制服丝袜无码视频| 国产精品亚洲综合久久小说| 国产SUV精品一区二区6| 老司国产精品视频| 日韩 欧美 国产 精品 综合| 亚洲丝袜第一页| 99视频在线免费| 亚洲欧洲日产国码无码av喷潮| 国产视频你懂得| 国禁国产you女视频网站| 欧美第二区| 国产毛片网站| 亚洲日韩日本中文在线| 日本午夜影院| 国产小视频网站| 四虎永久在线精品影院| 亚洲成人在线免费观看| 女人18毛片水真多国产|