请问VB中Err.Raise的作用
一般情况下我写程序都用onerrorgotoerrorhandle...errorhandle:msgboxerr.description看到有err.raise方法,查...
一般情况下我写程序都用
on error goto errorhandle
...
errorhandle:
msgbox err.description
看到有err.raise方法,查了一下还是不明白和msgbox err.description什么区别
请教各位帮我解释一下,谢谢。
一楼的还是没看懂,麻烦具体点的例子,err.raisie比直接显示err.description有什么好处?
再补充,是不是可以这么理解:
在程序根本没错的状况下,用err.raise凭空产生一个错误? 展开
on error goto errorhandle
...
errorhandle:
msgbox err.description
看到有err.raise方法,查了一下还是不明白和msgbox err.description什么区别
请教各位帮我解释一下,谢谢。
一楼的还是没看懂,麻烦具体点的例子,err.raisie比直接显示err.description有什么好处?
再补充,是不是可以这么理解:
在程序根本没错的状况下,用err.raise凭空产生一个错误? 展开
4个回答
展开全部
(首先声明,以下来自网络,我是编辑在一起而已。)
(一)关于ERR 和 ERROR的区别。
Error是一个事件
而err是一个对像
本质上是不同的
我不知你对“事件”和“对像”这两个概念理解不?
形像点说,Error是一个动词“我出错了”
而Err是一个名词“我出错这件事缺塌腔”
补充:Error怎么变成对象了?呃,姑且不论这个。
具体区别在哪里,我不知该怎么描述。给你个例子:
On Error Resume Next
If err.Number = XXX Then
...
End If
这里,你要调用err就必须先有On Error Resume Next这一句。如果没有,那么程序不会执行到If,
而只会终止在出错的地方
所以我说Error是一个事件。也可以理解成一个过程或者函数。
(二伏衫)ERR.RAISE 的作用。
err.raise方法引发一个运行错误。raise方法常用来测试错误条件。
为了正确编写错误处理程序,必须测试你要明确地捕获的所有错误条件。以物理方式重新生成引起错误的条件是不合理的。vb在error对象中提供了模拟错误条件的raise方法。给出所要生成的错误的号码,你就可以创建出一个模拟错误,象真正发生的错误一样,它会直接传递错误处理程序。见下面的例子。
on error goto divideproblem
err.raise number:=11
exit sub
divideproblem:
select case err.number
case 11
if msgbox("divide number by zero.enter another number?", vbyesno) then
b = inputbox("enter a value b:")
resume
else
end
end if
end select
vb还允许你自己定义错误来处理你的应用程序中独有的条件。vb给出了vbobjecterror常量,以及定义为-2147221504的值,用它来保存一组数字,提供给你自己定义错误。使用的数字如果大于vbobjecterror与512的和,就可以保证将衫谈来vb释放的错误,不会与你的错误号码相冲突。用户自定义错误实现的条件是vb错误处理程序无法检测到的,因此你可以创建一系列的错误来处理潜在的问题。例如下面的计算机与温度表的通信出现故障处理:
const error_device_not_found=1+vbobjecterror+512
if not connectthemometer() then
err.raise number:= error_device_not_found
end if
=====================================================
希望以上对你有所帮助。
(一)关于ERR 和 ERROR的区别。
Error是一个事件
而err是一个对像
本质上是不同的
我不知你对“事件”和“对像”这两个概念理解不?
形像点说,Error是一个动词“我出错了”
而Err是一个名词“我出错这件事缺塌腔”
补充:Error怎么变成对象了?呃,姑且不论这个。
具体区别在哪里,我不知该怎么描述。给你个例子:
On Error Resume Next
If err.Number = XXX Then
...
End If
这里,你要调用err就必须先有On Error Resume Next这一句。如果没有,那么程序不会执行到If,
而只会终止在出错的地方
所以我说Error是一个事件。也可以理解成一个过程或者函数。
(二伏衫)ERR.RAISE 的作用。
err.raise方法引发一个运行错误。raise方法常用来测试错误条件。
为了正确编写错误处理程序,必须测试你要明确地捕获的所有错误条件。以物理方式重新生成引起错误的条件是不合理的。vb在error对象中提供了模拟错误条件的raise方法。给出所要生成的错误的号码,你就可以创建出一个模拟错误,象真正发生的错误一样,它会直接传递错误处理程序。见下面的例子。
on error goto divideproblem
err.raise number:=11
exit sub
divideproblem:
select case err.number
case 11
if msgbox("divide number by zero.enter another number?", vbyesno) then
b = inputbox("enter a value b:")
resume
else
end
end if
end select
vb还允许你自己定义错误来处理你的应用程序中独有的条件。vb给出了vbobjecterror常量,以及定义为-2147221504的值,用它来保存一组数字,提供给你自己定义错误。使用的数字如果大于vbobjecterror与512的和,就可以保证将衫谈来vb释放的错误,不会与你的错误号码相冲突。用户自定义错误实现的条件是vb错误处理程序无法检测到的,因此你可以创建一系列的错误来处理潜在的问题。例如下面的计算机与温度表的通信出现故障处理:
const error_device_not_found=1+vbobjecterror+512
if not connectthemometer() then
err.raise number:= error_device_not_found
end if
=====================================================
希望以上对你有所帮助。
展开全部
Raise 被用来生成运行时错误,并可用来代替 Error 语句.当书写类模块逗档慎蠢备时要生成错误,Raise 是山敬有用的,因为 Err 对象比 Error 语句可能提供更丰富的信息。例如,用 Raise 方法,可以在 Source 属性中说明生成错误的来源,可以引用该错误的联机帮助。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
'粗丛谈就是凭空产生错误
'好处就是为了封装函数,模块化。
'这个函数打开一个文件,对于大型的Windows编程郑雀,一般将岩碰函数封装到类库ActiveX DLL中。
Function myOpenFile(sFile)
If Dir(sFile) = "" Then
'在这里自定义一个错误。
Err.Raise 9999, , "在myOpenFile中发生错误:文件" & sFile & "未找到。"
Else
h = FreeFile
Open sFile For Input As h
myOpenFile = h
End If
End Function
'程序中调用函数,测试一下效果。
Private Sub Command1_Click()
On Error GoTo er:
h = myOpenFile("c:\test.txt")
Input #h, tmp
Close h
Exit Sub
er:
MsgBox Err.Description
End Sub
'好处就是为了封装函数,模块化。
'这个函数打开一个文件,对于大型的Windows编程郑雀,一般将岩碰函数封装到类库ActiveX DLL中。
Function myOpenFile(sFile)
If Dir(sFile) = "" Then
'在这里自定义一个错误。
Err.Raise 9999, , "在myOpenFile中发生错误:文件" & sFile & "未找到。"
Else
h = FreeFile
Open sFile For Input As h
myOpenFile = h
End If
End Function
'程序中调用函数,测试一下效果。
Private Sub Command1_Click()
On Error GoTo er:
h = myOpenFile("c:\test.txt")
Input #h, tmp
Close h
Exit Sub
er:
MsgBox Err.Description
End Sub
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Err对象(http://www.itcankao.cn/ShowTopic/Topic_28_Art_782.html)
这篇文辩山羡章应该携拍会对你有唯正所帮助
这篇文辩山羡章应该携拍会对你有唯正所帮助
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询