seterror(0,0,0)的意义?
看到某位高手一直喜欢用这招必杀技 , 想学习,但是不是非常清楚他的用意,请看代码If ($bFound == True) Then
return SetError(0,0,0)
Else
return SetError(1,0,1)
EndIf
他的整个程序意在说明,如果bFound的值找到(true),就seterror为0,否则为1.为什么不这样
seterror(0)
seterror(1)
?
他这招优点在哪? 其实这个问题看看帮助就能解决
SetError ( 错误码 [, 扩展值 [, 返回值]] ) 本帖最后由 daiyu116 于 2011-7-7 19:05 编辑
回复 1# yarsye
根据我的理解, SetError(0,0,0)中第二个参数@extended 在针对同一个error时意义更大。
举个例子。
出错,出错的原因可能是运行文件出错,也可能是打开文件出错,
那么这时候可以这么写:
if 出错 then
if运行文件出错 then
returnSetError(0,1)
elseif 打开文件出错 then
returnSetError(0,2)
endif
endif
针对上面这个代码判断时就要这样写:
if @error=0 and @extened=1 then或者 if @error=0 and @extened=2 then
SetError(0,0,0) 或者 SetError(1,0,1) 或者 SetError(2,0,2) 中第三个参数的值如果和第一个@error参数值相同,那他完全是多余的,就不必特意写出来第三个参数。
所以对于1楼你贴出来的代码,我认为完全可以只写为
If ($bFound == True) Then
return SetError(0,0)
Else
return SetError(1,0)
EndIf
因此,举例子如下:
出错(@error),出错的原因(@extended)可能是运行文件出错(想设置这个原因返回的值设置为3),也可能是打开文件出错(想设置这个原因返回的值设置为9)
那么这时候可以这么写:
if 出错 then
if运行文件出错 then
return SetError(0,1,3)
elseif 打开文件出错 then
return SetError(0,2,9)
endif
endif
针对本例,后面判断的时候可以用下面的语句:
if @error=3 then或者 if @error=9 then
如果还有其他@error=3的情况,那么判断的时候要写成if @error=3 and @extended=1then 哇塞!详细透彻!清楚明了。谢谢 本帖最后由 daiyu116 于 2011-7-8 13:57 编辑
回复 4# yarsye
呵呵,上面是我的看法,但也可能会有不同的看法啊。
另外,很多函数都会有返回值,所以要特别注意设置seterror的插入点~欢迎交流 回复 5# daiyu116
非常感谢!
最近就在seterror这方面老是有困惑,最诡异的是 我定义了 Global $Error
$Error =ShellExecute(xx) 提示我不能给常量赋值 ,不知道$Error何时成为了常量。
想记录每做一步的返回值,如果出错也好知道在哪里出错了。 呵呵,以后遇到这样的情况我会想起此贴的,感谢 Marking !!! 标记 以后备用 谢谢分享
页:
[1]