如何判断过程在异常中运行(到底谁能解,已经很久了,真的没人知道?) ,再 + 100 分 (32分)

D

delp

Unregistered / Unconfirmed
GUEST, unregistred user!
例1:
try
A := 1 / 0;
XProcedure
{1}
except
XProcedure
{2}
end;
例2:
try
A := 1 / ?
finally
XProcedure
{3}
end;

procedure XProcedure;
begin
if 在 异常中 then
xxx
else
不在异常中
end;
 
记得Windows API有一个叫:GetLastError吗?
object Pascal的try...except只能得到当前的异常.
不过, 我们也可以按WinAPI有方式.在Application.OnException中...可以给自己的一个对象给值.这样就可以判断了.
这样只能用于有Applicationg对象的程序...其它的,我再找.
 
如果你是进行技术研究,我不知道[:D]
如果想要个变通的办法:
procedure XProcedure(const IsInException: Boolean = False);
begin
...
end;
这个参数表一看就明白,相信你已经想到了:)
 
to beta 老大 如果是这样你认为我有必要问吗?
 
楼主异常结构应该可行的呀!
 
这个问题好啊
 
我自己解决了,但是还不完美


try
except
.... 这里的函数能够捕获
end

try
finally
.... 这里还没搞定,怎么办....
end

 
早知道你要这样,也不用去看VCL中对异常怎么处理了.
这还不简单, 在Try...finally...中再用try...except...啊.
或是这样来实现:

try
try
A := 1/?
finally
XProcedure
{3}
end;
excetp
XProcedure
{3}
end;
 
贴出你现在的解决方案,也许对后一个问题有帮助。

不是 HydonLee 理解错了就是我理解错了:)
 
procedure TForm1.Test(A : Integer);
begin
if nil = ExceptObject then
ShowMessage('没什么事发生')
else
ShowMessage('有异常,操');
end;

Test 在

try
except
中有效
end



try

finally
无效
end;
 
在finally中再excpet一次 :)
 
try finally 好像是编译器实现的,最起码object pascal中没有他的实现方法,好像
不可能知道吧?还是想别的方法吧!
 
finally是无论异常或者不异常都会去执行的,所以无法判断。
 
异常应该是在except中去捕获吧,finally好像是不能捕获异常的
finally只是保证在发生异常的情况下,finally中的内容能够执行
并确在执行以后,重新 re-raise try 语句块中发生的异常。
也就是说可以在 finally执行完毕后 重新捕获异常
 
to:
ego,
wfzha,
nullx,
singler82,
不求甚解......
 
var
exb: boolean;
begin
exb:=false;
try
A := 1 / 0;
except
exb:=true;
end;
XProcedure(exb);
end;

procedure XProcedure(ex: Boolean);
begin
if ex then
showmessage('在 异常中 ')
else
showmessage('不在异常中')
end;

//这是最完美的过程
 
to xinxinxin
不行一点都不完美
 
用全局标识别变量
如xinxinxin所说,最直观的方法。。。。。。
还有用mutex。。
或许你因该把XProcedure写为异常内外两个不同过程。。。。。。。

procedure XProcedure(ex: Boolean);的主意不错啊
 
>>>>>>>>>>to beta 老大 如果是这样你认为我有必要问吗?
天,你问问题还要人家猜啊? 要知道人家这已经是解决你的问题了,否则请换个问法,知道你是个牛人,不过也请客气待人(热心人)啊,另外,别骂我狗拿耗子!
 
瞎想的:
直接访问stack看返回地址是不是ShowException或Application.HandleException
 

Similar threads

S
回复
0
查看
955
SUNSTONE的Delphi笔记
S
S
回复
0
查看
777
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
505
import
I
顶部