我想确保评估aBlock只会引发SomeCustomError类型的错误。有没有比使用isKindOf更好的方法:?
aBlock
on: Core.Error
do: [:ex |
(ex isKindOf: SomeCustomError)
ifTrue: [ex pass]
ifFalse: [(SomeCustomError identification: #generalError messageText: ex messageText) raise]]
答案 0 :(得分:1)
另一种方法 - 在类异常中定义方法 isMyTerribleException ,它应该返回 false 。在 CustomException 类中,定义重新定义方法并返回 true
aBlock
on: Core.Error
do: [:ex |
(ex isMyTerribleException)
ifTrue: [ex pass]
ifFalse: [(SomeCustomError identification: #generalError messageText: ex messageText) raise]]
它会更好,因为你可以引入新的异常类,必须要捕获它
答案 1 :(得分:1)
这听起来很奇怪。两件事
1)如何:
您正在从处理程序上下文重新签名。 这真的是你想要的吗? 或者您是否想要从原始上下文中重新发出第一个错误?
在后一种情况下,你应该使用类似的东西:
ex resignalAs: (SomeCustomError identification: #generalError messageText: ex messageText)
2)什么:
这不是KindOf:困扰我,但整个想法......
捕获所有类型的错误并替换为特定的错误?
用例是什么?
谁会抓到具体的一个?
或者特定的一个具有不同的默认操作?