ControlThrowable

abstract class ControlThrowable(message: String) extends Throwable

A parent class for throwable objects intended for flow control.

Instances of ControlThrowable should not normally be caught.

As a convenience, NonFatal does not match ControlThrowable.

import scala.util.control.{Breaks, NonFatal}, Breaks.{break, breakable}

breakable {
  for (v <- values) {
    try {
      if (p(v)) break
      else ???
    } catch {
      case NonFatal(t) => log(t)  // can't catch a break
    }
  }
}

Suppression is disabled, because flow control should not suppress an exceptional condition. Stack traces are also disabled, allowing instances of ControlThrowable to be safely reused.

Instances of ControlThrowable should not normally have a cause. Legacy subclasses may set a cause using initCause.

Source:
ControlThrowable.scala
class Throwable
class Object
trait Matchable
class Any

Value members

Constructors

Inherited methods

final def addSuppressed(x$0: Throwable): Unit
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable
Inherited from:
Throwable