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.

主站蜘蛛池模板: 国产JIZzJIzz视频全部免费| 在线亚洲小视频| 精品国产香蕉在线播出| 亚洲视频在线青青| 国产成人成人一区二区| 内射人妻无码色AV天堂| 亚洲综合色吧| 国产本道久久一区二区三区| 亚洲天堂伊人| 精品第一国产综合精品Aⅴ| 伊人久久久久久久久久| 91久久青青草原精品国产| 亚洲精品手机在线| 国产麻豆va精品视频| 99re在线免费视频| 伊人久久大香线蕉综合影视| 国产美女91视频| 白浆视频在线观看| 久久免费视频播放| 99在线视频免费观看| 伊人AV天堂| 啦啦啦网站在线观看a毛片 | 为你提供最新久久精品久久综合| 国产亚洲视频免费播放| www.亚洲一区| 伊人国产无码高清视频| 久久精品人人做人人爽| 欧美成a人片在线观看| 欧美一区二区丝袜高跟鞋| 精品伊人久久久香线蕉 | 国产精品理论片| 亚洲国产综合精品中文第一| 69免费在线视频| 国产迷奸在线看| 欧美日韩亚洲国产主播第一区| 国产精品黑色丝袜的老师| 无码免费试看| 日韩中文精品亚洲第三区| 欧美精品高清| 国产区福利小视频在线观看尤物| 久久女人网| 美女无遮挡免费网站| 亚洲资源站av无码网址| 日本亚洲最大的色成网站www| 一级黄色片网| 精品人妻AV区| 成人精品免费视频| 超碰aⅴ人人做人人爽欧美 | 一级全免费视频播放| 国产呦视频免费视频在线观看| 91久久偷偷做嫩草影院电| 亚洲AⅤ综合在线欧美一区| 日本人又色又爽的视频| 国产精品偷伦视频免费观看国产| 久久99精品国产麻豆宅宅| 亚洲日本中文字幕天堂网| 亚洲电影天堂在线国语对白| 国产精品永久在线| 亚洲一区二区约美女探花 | 亚洲AV永久无码精品古装片| 国产一区二区色淫影院| 亚洲人成高清| 国产成人综合在线视频| 免费国产高清精品一区在线| 狠狠v日韩v欧美v| 在线看片中文字幕| 国产成人高清在线精品| 一级做a爰片久久毛片毛片| 国产毛片基地| 国产女人爽到高潮的免费视频| 久久亚洲天堂| 国产黄网永久免费| 亚洲天堂777| 国产欧美在线观看视频| 精品综合久久久久久97超人该| 国产精品自在线拍国产电影| 日韩视频精品在线| 91午夜福利在线观看| 一区二区三区四区精品视频| 亚洲国产一区在线观看| 国产高清在线精品一区二区三区| 亚洲综合色吧|