A marker trait indicating that the Throwable
it is mixed
into is intended for flow control.
Note that Throwable
subclasses which extend this trait
may extend any other Throwable
subclass (eg.
RuntimeException
) and are not required to extend
Throwable
directly.
Instances of Throwable
subclasses marked in
this way should not normally be caught. Where catch-all behaviour is
required ControlException
s should be propagated, for
example,
import scala.util.control.ControlException
try {
// Body might throw arbitrarily
} catch {
case ce : ControlException => throw ce // propagate
case t : Exception => log(t) // log and suppress