Rather than ���Array with:with:��� it probably should be ���ExceptionSet with:with:���.

On May 25, 2023, at 9:19 AM, James Foster via Pharo-users <pharo-users@lists.pharo.org> wrote:

The #���on:do:��� implementation in Block accepts either an Exception or an ExceptionSet as the first parameter. So you can do something like the following (I���m typing from memory without trying so may have syntax errrors):

[ ���tryBlock��� ] on: (Array with: ExceptionOne with: ExceptionTwo) do: [:ex | 
  (ex isKindOf: ExceptionOne) ifTrue: [ ���handleOne��� ].
  (ex isKindOf: ExceptionTwo) ifTrue: [ ���handleTwo��� ].
].

The above code can be improved in a variety of ways, but it should get you started. Note also that since Smalltalk allows you to modify base classes, you could add #���on:do:on:do:��� to Block.

James

On May 25, 2023, at 8:24 AM, mlntdrv@gmail.com wrote:

In other languages there is the possibility to chain exception handlers like this:

try { doOne(); doTwo(); doThree(); }

catch(ExceptionOne ex){

handleOne();

}

catch(ExceptionTwo ex) {

handleTwo();

}

catch(ExceptionThree ex) {

handleThree();

}

catch(Exception ex) {

handleRest();

}

Is this possible in Pharo? I���ve tried

[ block ]

on: ExceptionOne do: [ handleOne ]

on: ExceptionTwo do: [ handleTwo ]

but it is invalid syntax.