Programmer's Reference

ExceptionalEvent collections

Occasionally, it is desirable to use a single handler for several nonhierarchically related exceptions. To handle this situation, the when:do: syntax has been extended to allow an ExceptionalEvent collection as the when argument. ExceptionalEvent collections are created by sending the vertical bar (|) message to an instance of ExceptionalEvent as follows:

In class ExceptionalEvent:

| anExceptionalEvent
    "Answer a new ExceptionalEvent collection
    containing the receiver and anExceptionalEvent."

In the ExceptionalEvent collection:

| anExceptionalEvent
    "Add anExceptionalEvent to the exceptions stored in the receiver."

Given these definitions, it is possible to write the following:

[ "Some code that could cause several exceptions" ]
    when: Type1Exception | Type2Exception | Type3Exception
    do: [ :signal | signal exitWith: 'I expected this exception'].

ExceptionalEvent collections can be stored in a variable and later referred to:

ExpectedExceptions :=
    Type1Exception | Type2Exception | Type3Exception.
[ "Some code that could cause several exceptions"[
    when: ExpectedExceptions
    do: [ :signal | signal exitWith: 'I expected this exception'].

ExceptionalEvent collections cannot be signaled.

Within the body of a handler block, sending exception to the passed-in instance of Signal always answers the particular exception that was signaled.


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]