I icysword Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-04 #1 请问 delphi 如何忽略错误, 就像VB的 on error resume next 一样, 有什么方法吗?
Y yh Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-04 #2 try your code ..... except end;
C cfx Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-04 #4 try . . .except end; try finally end;
I icysword Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-05 #8 不行啊, 我试过了. 假如我读注册表里 HKEY_CURRENT_USER 下的 abc 字符串键值, buff:=regedit.readstring('abc'); 但如果遇到不是字符串的 abc 键值, 读取的时候就会出错, 这个错误用 try 好像是忽略 不了的, 而且用 RegisterServiceProcess 函数的时候, 在win2000下会出错, 这个错误也 是用 try 无法忽略的, 但 VB 的 on error resume next 就可以使程序正常运行...
不行啊, 我试过了. 假如我读注册表里 HKEY_CURRENT_USER 下的 abc 字符串键值, buff:=regedit.readstring('abc'); 但如果遇到不是字符串的 abc 键值, 读取的时候就会出错, 这个错误用 try 好像是忽略 不了的, 而且用 RegisterServiceProcess 函数的时候, 在win2000下会出错, 这个错误也 是用 try 无法忽略的, 但 VB 的 on error resume next 就可以使程序正常运行...
T tseug Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-05 #9 try oldErrMode := SetErrorMode(0); buff := regedit.readstring('abc'); finally setErrorMode(oldErrMode); end;
try oldErrMode := SetErrorMode(0); buff := regedit.readstring('abc'); finally setErrorMode(oldErrMode); end;
S skyweb Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-05 #10 try code1; except code2; end; 的意思是执行code1,如果发生异常就执行code2,然后忽略该异常。 当然如果你的code2又触发异常就另当别论了。 try code1; code1.1; finally code2; end; 的意思是执行code1,code1.5,然后无论是否发生异常都执行code2; 如果code1触发异常,code1.5将不被执行,而直接执行code2; 但是由于finally并不处理异常,所以该异常将提交给最近一层的try except程序块。 另外在Delphi的IDE调试环境中,所有异常都会被IDE捕获并显示出来, 但在调试环境外,被except捕获并处理的异常就不会再被捕获了。 还有一种情况就是你用的第三方控件或者程序库,它在你的try except 错误 陷井之前先捕捉到了异常,并将出错信息显示出来……,这时你的try except实际 上就失去了作用。 就好象你用 try StrToInt('1.0'); except // donothing; end; 捕捉了字符转换异常,Application控件的try except缺省导常陷井也捉不到该异常, 无法显示异常信息了。
try code1; except code2; end; 的意思是执行code1,如果发生异常就执行code2,然后忽略该异常。 当然如果你的code2又触发异常就另当别论了。 try code1; code1.1; finally code2; end; 的意思是执行code1,code1.5,然后无论是否发生异常都执行code2; 如果code1触发异常,code1.5将不被执行,而直接执行code2; 但是由于finally并不处理异常,所以该异常将提交给最近一层的try except程序块。 另外在Delphi的IDE调试环境中,所有异常都会被IDE捕获并显示出来, 但在调试环境外,被except捕获并处理的异常就不会再被捕获了。 还有一种情况就是你用的第三方控件或者程序库,它在你的try except 错误 陷井之前先捕捉到了异常,并将出错信息显示出来……,这时你的try except实际 上就失去了作用。 就好象你用 try StrToInt('1.0'); except // donothing; end; 捕捉了字符转换异常,Application控件的try except缺省导常陷井也捉不到该异常, 无法显示异常信息了。
S skyweb Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-05 #11 笔误,不好意思,上面的code1.5都应该是code1.1才对。:)
I icysword Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-05 #12 还是不行呀, 提示 Invalid data type for 'abc' 呀, 而且 RegisterServiceProcess 也 还是出错, 不能忽略呀...
I icysword Unregistered / Unconfirmed GUEST, unregistred user! 2002-01-05 #14 能行吗? 大家有没有试过呀? 没装WIN2000试RegisterServiceProcess , 可以试试那个读 注册表的啊, 我试过, 但好像老是出现错误, 这是怎么回事呀??