i:=1;j:=0;
try
try
i:=i div j;
except
showmessage(vartostr(i));
showmessage('is this ok?');
showmessage('except');
end;
finally
showmessage('finally');
end;
显示结果为:
1
is this ok?
except
finally
但是把showmessage(vartostr(i));这一句去掉就只显示finally了,请问是为什么?
为什么有的时候嵌套的except中的语句不执行。此问题同样出现在except中嵌套finally的情况,大家可以试一下。
try
try
i:=i div j;
except
showmessage(vartostr(i));
showmessage('is this ok?');
showmessage('except');
end;
finally
showmessage('finally');
end;
显示结果为:
1
is this ok?
except
finally
但是把showmessage(vartostr(i));这一句去掉就只显示finally了,请问是为什么?
为什么有的时候嵌套的except中的语句不执行。此问题同样出现在except中嵌套finally的情况,大家可以试一下。
解决方案 »
- 怎样改变filter属性页中的属性
- 如何查找运行的进程中是否存在某个进程?如abc.exe
- ADO小问题!
- 如何对下面的时间进行分解?
- 请问98下的winipcfg.exe这个软件的功能是怎么实现的
- 如何汉化英文应用程序的界面?
- 《中国开发者联盟》 欢迎您的加入!
- 哇呀呀,偶上午的这个贴子怎么打不开?服务器怎么近来老出错?只好再问一次,请大家推荐一个制作帮助的软件吧,偶用了耶书制造,感觉不太好,有没有其他中文的呢?//牛虻
- Interbase:How can i create a database with case insensitive
- 请问什么时候发生Blod data has been modified 错误,如何恢复?
- 急,急,急
- 我第一次做一个小的C/S结构应用程序经验总结.
这样来测设try
try
raise exception.Create('yichang ');
except
showmessage(vartostr(i));
showmessage('is this ok?');
showmessage('except'); end;
finally
showmessage('finally');
i:=1;j:=0;
try
try
i:=i div j; //这里抛出异常
except
showmessage(vartostr(i));
showmessage('is this ok?');
showmessage('except');
end;
finally
showmessage('finally');
end;
编译器优化论也好,delphi已经处理论也好,都不能知道自己写的语句是否执行except部分是吗?
必须自己调试才能得到结果,是吗?
放到finally的语句块外面也照样提示
value assigned to 'i' never used,value assigned to 'j' never used
我很迷惑,呵呵。
tjff2000(fengyun),你说呢?
try
try
...
finally
...
end;
except
...
end;finaly不处理异常,except处理异常,在except后,异常已被处理,就没有异常了,所以你的语句跟下面的没有区别
i:=1;j:=0;
try
i:=i div j;
except
showmessage(vartostr(i));
showmessage('is this ok?');
showmessage('except');
end;
showmessage('finally');
是编译器做了优化。
而Finally这样的嵌套是无论如何都要执行的。当然会发生有时候except后的语句不执行的情况了。
i:=j;
showmessage(vartostr(i));