首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >smalltalk中的try-catch-finally成语

smalltalk中的try-catch-finally成语
EN

Stack Overflow用户
提问于 2011-10-21 02:24:30
回答 4查看 1.9K关注 0票数 6

如何在smalltalk中实现try-catch-finally习惯用法?我看到有on:do:ensure:,但没有on:do:ensure:。我一定漏掉了什么。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-10-21 03:48:38

您可以将#on:do块包装在附加了#ensure:的另一个块中。

票数 7
EN

Stack Overflow用户

发布于 2011-10-21 19:52:40

如果您真的需要它,您可以向BlockClosure添加一个协议:

代码语言:javascript
复制
#on: anErrorOrSet do: errorBlock ensure: finallyBlock
    [ self on: anErrorOrSet do: errorBlock ]
    ensure: finallyBlock

它的行为就像java上的try:catch: will:。

这就是smalltalk的魔力(好吧,只是其中的一小部分),如果没有满足您的需求,您可以随时扩展它:)

票数 5
EN

Stack Overflow用户

发布于 2011-10-21 16:28:20

我不确定我是否理解了你的问题,但如果我理解了,你的意思是“如果一个异常被触发,如何处理它,否则如何继续正常的执行”,这是你可以做的:

代码语言:javascript
复制
[self doWhatever] on: SomeException do: [self handleSomeException].
self continueNormally.

查看Exception的所有子类,看看您可以捕获哪些类型的异常。

希望它能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7840392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档