1樓:匿名使用者
錯誤處理在vb中較常見的應用.
vb錯誤處理,一般放在整個模組最後或者函式的最後.在發生錯誤時,利用goto 標籤名 這樣的語句來進行跳轉.這其實是一個過程程式設計裡常用的語法形式.
做這個之前,你心裡得對程式有一個大概瞭解.
錯誤處理標籤及語句必須放在sub過程及函式過程裡.但vb是逐條執行語句的,所以,如果你沒有特殊標記,它會把你寫的**全部執行完.這就是你的程式出現錯誤的原因.
怎麼處理呢?在vb中,有一個退出過程與函式的方法.那就是exit sub或者exit function在你的錯誤標籤前面,緊挨著標籤,也就是錯誤標籤的前一行,加上結束過程或者結束函式的語句告訴vb我的函式或者過程已經完成.
明白了嗎?
2樓:匿名使用者
on error goto 語句的確是可以跳到指定位置執行需要**,但是如果程式沒錯,而跳轉語句在該**段後面是也會被執行的,因為你在error_1之前沒先跳出這段**.修改方法:在error_1和end if之間加一句exit sub即可.
3樓:匿名使用者
把程式第二行 on error goto error_1 後邊那個冒號去掉,
在第十行end if和error_1之間加一句exit sub 就行了。
adors.open "select * from user_info", cnn, adopenkeyset
on error goto error_1
if adors.recordcount > 0 then
me.txtusername.clear
do while adors.eof = false
me.txtusername.additem (adors.fields("user_name"))
adors.movenext
loop
adors.close
end if
exit sub
error_1:
msgbox ("請檢查你的資料庫是否已經正常啟動!")
4樓:匿名使用者
您好,您也許可以使用以下方法進行修改,即增加兩行**:
...goto nexta:
error_1:
msgbox ("請檢查你的資料庫是否已經正常啟動!")nexta:
vb中關於on error goto語句
5樓:匿名使用者
我明白了,你再仔細看看,說的不是dealerror沒有定義吧????
說的是你的:showerror沒有定義!!!!!!!!!!
showerror這個函式不是vb自帶的,你需要自己寫!!!
你再試試。
6樓:匿名使用者
dealerror:
7樓:匿名使用者
showerror 的問題,
把它改成
dealerror:
msgbox "123123" & vbcrlf & err.description
vb6 的on error goto 詳細用法,刪掉後會有什麼影響?
8樓:匿名使用者
vb6的on error語句用於啟動一個錯誤處理程式並指定該子程式在一個過程中的位置;也可用來禁止一個錯誤處理程式。刪除它則任何執行時錯誤都是致命的;也就是說,結果會導致顯示錯誤資訊並中止執行。
on error 語句,啟動一個錯誤處理程式並指定該子程式在一個過程中的位置;也可用來禁止一個錯誤處理程式。
on error 語句示例
本示例先使用 on error goto 語句在一個過程中指定錯誤處理的**所在。本示例中,試圖刪除一已經開啟的檔案從而生成的錯誤碼為 55。這個錯誤將由示例中的錯誤處理程式碼來處理,處理完後,控制會回到發生錯誤的語句處。
on error goto 0 語句關閉錯誤陷阱。然後 on error resume next 語句用來改變錯誤陷阱,以便發覺下一個語句產生的錯誤的範圍。請注意示例中使用 err.
clear 在錯誤處理完後,清除 err 物件的屬性。
sub onerrorstatementdemo()
on error goto errorhandler ' 開啟錯誤處理程式。
open "testfile" for output as #1 ' 開啟輸出檔案。
kill "testfile" ' 試圖刪除已開啟的檔案。
on error goto 0 ' 關閉錯誤陷阱。
on error resume next ' 改變錯誤陷阱。
objectref = getobject("myword.basic") ' 試圖啟動不存在
' 的物件
'檢查可能發生的 automation 錯誤。
if err.number = 440 or err.number = 432 then
' 告訴使用者出了什麼事。然後清除 err 物件。
msg = "there was an error attempting to open the automation object!"
msgbox msg, , "deferred error test"
err.clear ' 清除 err 物件欄位。
end if
exit sub ' 退出程式,以避免進入錯誤處理程式。
errorhandler: ' 錯誤處理程式。
select case err.number ' 檢查錯誤代號。
case 55 ' 發生「檔案已開啟」的錯誤。
close #1 ' 關閉已開啟的檔案。
case else
' 處理其他錯誤狀態 . . .
end select
resume ' 將控制返回到產生錯誤的語句。
end sub
9樓:風雪劍無痕
on error goto 是如果產生錯誤則跳到需要跳轉的地方,刪掉後可能會不能正確執行
還有一種語句是直接跳過錯誤繼續執行下一句,**是
on error resume next,如果沒有跳轉的必要,可以使用這句,但要慎用
10樓:匿名使用者
如果程式執行中遇到語法或者不可預期的錯誤,就跳轉到err1這一行,從這一行往下面繼續執行。異常處理語句還有on error resume next .當遇到錯誤,執行下面一行。
on error goto 0 、禁止當前過程中任何已啟動的錯誤處理程式。懂吧!就是遇到時候怎麼處理,往**跳轉執行。
11樓:匿名使用者
分析了你的**是選擇一個日期作為取得星期的名稱。你使用陣列標籤給點選作為選擇是很方便的方法,但是多餘了許多無意義的運算**,而且這個過程裡幾乎是沒需要使用到on error的處理語句。
private sub label3_click(index as integer)
dim i as integer
for i = 0 to 30
label3(i).borderstyle = 0
next i
label3(index).borderstyle = 1
dim month1, day1, year1, date1
day1 = label3(index).caption
'以下不明白你為何取listindex,而不直接取得使用者點選挑選的年月名稱?
' ----月--------------
'month1 = cbomonth.listindex + 1 『如果使用者沒有選擇點選listindex是 -1
'month1 = cbomonth.list(cbomonth.listindex)
'使用前2個方法需要確認使用者有點選動作才不會出錯
month1 = cbomonth.text 『這種方式妥當,一般載入窗體時會設定有預設值
' ---年---------------
'year1 = cboyear.listindex + 1960
'year1 = cboyear.list(cboyear.listindex)
'使用前2個方法需要確認使用者有點選動作才不會出錯
year1 = cboyear.text 『這種方式妥當,一般載入窗體時會設定有預設值
' ------------------
'雖然 + 沒有錯,但是如果不是數值的運算,儘量習慣使用 & 做為合併字串的方式
date1 = str(month1) & "/" & str(day1) & "/" & str(year1)
'如果上一行沒能正確顯示,可以換成下一行試試
' date1 = cstr(year1) & "-" & cstr(month1) & "-" & cstr(day1)
' 取得星期 ?
text2.text = weekdayname(weekday(date1)) '中文星期 ?的函式
text1.text = format(date1, "long date")
end sub
'這是一個能預期知道錯誤點的過程,使用on error錯誤處理語句是多餘。
關於ACCA,關於acca。
acca是是世界上領先的專業會計師團體,也是國際學員最多 學員規模發展最快的專業會計師組織。acca是英國熱特許公認會計師公會,考試科目一共是16科,通過其中14科就可以拿到acca證書。16科分為四個大模組,知識模組 f1 f3 技能模組 f4 f9 核心模組 p1 p3 選修模組 p4 p7 選...
關於DELL vista,關於DELL vista
這應該是你電腦裡的某一個軟體版本出錯造成的。如下 c windows winsxs policies x86 policy.1.0.microsoft.windows.gdiplus 6595b64144ccf1df x ww 4e8510ac目錄覆蓋版本號為5512的cat和policy檔案就會導...
關於專升本,關於專升本
凡是中華人民共和國公民,包括港澳臺同胞,不受性別 年齡 學歷 種族 民族 居住地 身體健康狀況等限制,均可報考專升本。關於專升本 凡是中華人民共和國公民,包括港澳臺同胞,不受性別 年齡 學歷 種族 民族 居住地 身體健康狀況等限制,均可報考專升本。你好,我是05級的,現在升上本科已經一年了,說一下我...