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, mlnt...@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. >> >