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.

主站蜘蛛池模板: 91国内外精品自在线播放| 99在线观看精品视频| 国产成人精品午夜视频'| 国产男女免费完整版视频| 久草视频一区| www.狠狠| 成人无码区免费视频网站蜜臀| 色综合久久88色综合天天提莫| 亚洲经典在线中文字幕| 欧美视频在线播放观看免费福利资源| 91视频首页| 五月天福利视频| 国产精品爽爽va在线无码观看| 国产又粗又爽视频| 久久久久中文字幕精品视频| 精品成人一区二区三区电影| 中国一级特黄大片在线观看| 欧美一级色视频| 超薄丝袜足j国产在线视频| 一级毛片免费不卡在线| 无码国产伊人| 欧洲欧美人成免费全部视频| 国产粉嫩粉嫩的18在线播放91| 久久久久国产一区二区| 国产丝袜第一页| 99热这里都是国产精品| 日韩福利视频导航| 国产福利2021最新在线观看| 无遮挡一级毛片呦女视频| 91久久夜色精品国产网站| 国产成人禁片在线观看| 国产在线视频二区| 亚洲第一成年网| 8090午夜无码专区| 3D动漫精品啪啪一区二区下载| 国产精品尤物在线| 欧美一区二区福利视频| 午夜国产精品视频| 亚洲国产精品人久久电影| 日日拍夜夜操| 国产丝袜一区二区三区视频免下载| 亚洲妓女综合网995久久| 欧美成人看片一区二区三区| 久久精品电影| 谁有在线观看日韩亚洲最新视频| 亚洲无码视频一区二区三区| 欧美色综合久久| 国产成人永久免费视频| 欧美日韩亚洲国产| 男人天堂亚洲天堂| 亚洲精品爱草草视频在线| 国产呦精品一区二区三区下载 | 777午夜精品电影免费看| 亚洲狠狠婷婷综合久久久久| 国产免费高清无需播放器| 免费观看三级毛片| 久久先锋资源| 亚洲成肉网| 中文字幕资源站| 丝袜美女被出水视频一区| 天天干天天色综合网| 久久综合干| 伊人无码视屏| 欧美在线一级片| AV天堂资源福利在线观看| 久久久久国产一级毛片高清板| 国产免费a级片| 手机精品福利在线观看| 亚洲伦理一区二区| 国产精品自在线天天看片| 伊人91在线| 亚洲一区二区三区麻豆| 热99re99首页精品亚洲五月天| 亚洲aaa视频| 91精品视频在线播放| 91伊人国产| 91人妻日韩人妻无码专区精品| 亚洲色图欧美在线| 亚洲性影院| 成年人福利视频| 99久久精品国产综合婷婷| 国国产a国产片免费麻豆|