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 ControlExceptions 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