2013-11-21 39 views
1

我想确保评估aBlock只会引发SomeCustomError类型的错误。有没有比使用isKindOf更好的方法:?重新排列异常,除非它们属于某种类型

aBlock 
    on: Core.Error 
    do: [:ex | 
     (ex isKindOf: SomeCustomError) 
     ifTrue: [ex pass] 
     ifFalse: [(SomeCustomError identification: #generalError messageText: ex messageText) raise]] 

回答

1

另一种方法 - 定义方法isMyTerribleException类异常,它应该返回。在您的CustomException类中定义的方法重新定义与返回真正

aBlock 
    on: Core.Error 
    do: [:ex | 
     (ex isMyTerribleException) 
     ifTrue: [ex pass] 
     ifFalse: [(SomeCustomError identification: #generalError messageText: ex  messageText) raise]] 

这将是更好,因为你可以在引入新的异常类,必须逮住

1

这听起来很奇怪,我。有两件事情

1)HOW:

您是从处理程序上下文resignalling。 它真的是你想要的吗?
或者你想从原始上下文中提出第一个错误的位置?

你应该使用类似后者的情况:

ex resignalAs: (SomeCustomError identification: #generalError messageText: ex messageText) 

2)内容:

这不是isKindOf:这困扰我,但整个想法...
捕获所有类型的错误,并由具体的一个取代?
什么是用例?
谁会抓住特定的一个?
或者特定的人有不同的默认操作?

+0

此代码在导入器类中使用,我希望导入功能在导入出错时仅抛出SomeCustomError。但#XMLate:XML.Schema 有时会抛出纯粹的错误异常。 – Cantillon

相关问题