i know !:) see here
//it is windows structured exception handling
//c或c++的代码
int ExceptionFilter()
{
static int i;
i++;
if i >=9
return EXCEPTION_CONTINUE_EXECUTION;//<-here 执行Statement
else
return EXCEPTION_EXECUTE_HANDLER;//<-here 执行statement2
}
try
{
...
}
except(ExceptionFilter())
{
...
}
to get more infomation ,please see windows sdk;
var ec:integer; runok:boolean;
begin
.
.
ec:=0;runok:=false;
while (ec<10) and (runok=false) do
begin
try
Statement;
runok:=true;
except
ec:=ec+1;
runok:=false;
end;
end;
if (runok=false) and (ec>8) then Statement2;
.
.
这样可以吗?
var ec:integer; runok:boolean;
begin
.
.
ec:=0;runok:=false;
while (ec<10) and (runok=false) do
begin
try
Statement;
runok:=true;
except
ec:=ec+1;
runok:=false;
end;
end;
if (runok=false) and (ec>8) then Statement2;
.
.
这样可以吗?
var
i, ErrCount: integer;
try
ErrCount := 0;
for i := 1 to 9 do
try
Statement;
break; //执行成功就直接跳出循环了
except
ErrCount := ErrCount + 1;
end;
if ErrCount >= 9 then raise; //重新触发Statement2
except
Statement2;
end;