#### §2.3.2.(d) Declared lifting for catch blocks

Also the argument of a catch block may apply declared lifting like in:

    catch (BaseException as RoleClass param) { stmts }

This syntax is only valid in a non-static scope of a team (directly or nested). In the given example, `RoleClass` must be played by `BaseException`. Note, that `RoleClass` itself need not be a throwable. As the effect of this declaration the catch block will catch any exception of type `BaseException` and provides it wrapped with a `RoleClass` instance to the subsequent block.
Also note, that re-throwing the given instance `param` has the semantics of implicitly lowering the role to its base exception before throwing, because the role conforms to the required type `Throwable` only via lowering.