delphi 如何忽略错误 (50分)

  • 主题发起人 主题发起人 icysword
  • 开始时间 开始时间
I

icysword

Unregistered / Unconfirmed
GUEST, unregistred user!
请问 delphi 如何忽略错误, 就像VB的 on error resume next 一样, 有什么方法吗?
 
try
your code
.....
except
end;
 
有warning,如果你愿意忽略的话编译通过
 
try
.
.
.except


end;

try


finally


end;
 
可以按yh的呵!

只要不是致命的都可以忽略
 
有的话,可能是pascal的某些预编译开关了。
 
不行啊, 我试过了. 假如我读注册表里 HKEY_CURRENT_USER 下的 abc 字符串键值,
buff:=regedit.readstring('abc');
但如果遇到不是字符串的 abc 键值, 读取的时候就会出错, 这个错误用 try 好像是忽略
不了的, 而且用 RegisterServiceProcess 函数的时候, 在win2000下会出错, 这个错误也
是用 try 无法忽略的, 但 VB 的 on error resume next 就可以使程序正常运行...
 
try
oldErrMode := SetErrorMode(0);

buff := regedit.readstring('abc');

finally
setErrorMode(oldErrMode);
end;
 
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缺省导常陷井也捉不到该异常,
无法显示异常信息了。
 
笔误,不好意思,上面的code1.5都应该是code1.1才对。:)
 
还是不行呀, 提示 Invalid data type for 'abc' 呀, 而且 RegisterServiceProcess 也
还是出错, 不能忽略呀...
 
用TRY 拦截 错误 ,然后自己处理
 
能行吗? 大家有没有试过呀? 没装WIN2000试RegisterServiceProcess , 可以试试那个读
注册表的啊, 我试过, 但好像老是出现错误, 这是怎么回事呀??
 
接受答案了.
 
后退
顶部