由try引发的对DELPHI的PASCAL的困惑 (50分)

  • 主题发起人 主题发起人 NewLearner
  • 开始时间 开始时间
N

NewLearner

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么 try ... except ... end 后不能加 else ... end,
还有,为什么用了try execpt 就不能同时用 finally
为什么不能轻松地实现宏替换,这个功能的用处太多太重要了,居然说不提倡
CASE .. OF的使用范围是其它几种语言中最不灵活的
真不知PASCAL是怎么搞的,还有很多看似很简单、很常用的功能,其它语言当然是可以轻松实现的
但PASCAL却不能直接实现,真是让人感到奇怪
 
如果出错执行一段代码,否则执行另一段代码
为什么 try ... except ... end 后不能加 else ... end,哪位先帮我把这个问题解决了我急用啊
如果出错执行一段代码,这个代码放在except ....end之间,
否则执行另一段代码,这个代码放在出错代码的后面,不就可以了?因为不出错就往下执行啊,
真不懂你怎么想的!
 
出现异常后,在异常点后面的代码就不会执行,所以try...except...end是没有问题的
try
...
可能出现异常的代码
...
如果没错执行这些语句
except
如果出错了执行这里
end
 
TO HEBAISONG
我的意思是要把代码封装起来,出错后执行一段代码,否则执行另一段代码,完了之后(无论是否出错)都执行本结构中剩下的代码
为什么你看不懂呢
 
to NewLearner:
你是不是没搞懂约
 
to fmz:关于except 我已没有困惑了,但是剩下后面的困惑还没有消啊
 
Case i of
....
end;
是用一个指针来实现跳转的,速度很快.所以有限制了.
 
为什么用了try execpt 就不能同时用 finally
怎样实现类似宏替换的功能,要比较通用的
 
try
...
except
...
else
...
end;
是可以的
至于不可以同时用finally你可以查过去的帖子,我回答过
 
try
封装的代码
如果不出错,要执行的代码
except
出错后执行的代码
end;
最后执行的代码

>>为什么用了try execpt 就不能同时用 finally
其实
try try
A A
finally 可以写成 except
B end;
end
B
 
NewLearner,按照你的描述来说,HeBaisong的说法是正确的,请认真思考一下,或者看看自己
是不是有描述歧义的地方。
except finally 同时使用的方式通常是:

try
try
可能出错的代码;
出错后不再执行,但不出错会执行的代码;
finally
无论是否出错,一定执行的代码。
end;
出错后不再执行,但不出错会执行的代码;
except
出错后执行完finally部分后才执行的代码。
end;

其他继续执行,并不受异常影响的代码 ....
 
shangshang已经说得非常清楚了。
其实Object Pascal的异常机制是非常灵活的完善的,关键是要看你的理解。
这是另一种用法。
try
try
可能出错的代码
不出错,当然就继续往下跑了
except
出现错误才执行的代码(处理错误)
raise //可以在这里还可以考虑把异常重新抛出来
end;
finally
肯定会执行的代码,主要用于资源释放。
end;

另外: dlnew的理解是错的
 
多人接受答案了。
 
后退
顶部