Scala Library: scala.util.control.ControlThrowable
scala.util.control.ControlThrowable
trait ControlThrowable extends Throwable with NoStackTrace
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 ControlThrowable
should be
propagated, for example:
import scala.util.control.ControlThrowable
try {
// Body might throw arbitrarily
} catch {
case c: ControlThrowable => throw c // propagate
case t: Exception => log(t) // log and suppress
}
Value Members From java.lang.Throwable
final def addSuppressed(arg0: java.lang.Throwable): Unit
- Definition Classes
- Throwable
(defined at java.lang.Throwable)
def getCause(): java.lang.Throwable
- Definition Classes
- Throwable
(defined at java.lang.Throwable)
final def getSuppressed(): Array[java.lang.Throwable]
- Definition Classes
- Throwable
(defined at java.lang.Throwable)
def initCause(arg0: java.lang.Throwable): java.lang.Throwable
- Definition Classes
- Throwable
(defined at java.lang.Throwable)
def printStackTrace(arg0: PrintStream): Unit
- Definition Classes
- Throwable
(defined at java.lang.Throwable)
def printStackTrace(arg0: PrintWriter): Unit
- Definition Classes
- Throwable
(defined at java.lang.Throwable)
def setStackTrace(arg0: Array[StackTraceElement]): Unit
- Definition Classes
- Throwable (defined at java.lang.Throwable)
Full Source:
/* __ *\
** ________ ___ / / ___ Scala API **
** / __/ __// _ | / / / _ | (c) 2003-2013, LAMP/EPFL **
** __\ \/ /__/ __ |/ /__/ __ | http://scala-lang.org/ **
** /____/\___/_/ |_/____/_/ | | **
** |/ **
\* */
package scala
package util.control
/** 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 `ControlThrowable`
* should be propagated, for example:
* {{{
* import scala.util.control.ControlThrowable
*
* try {
* // Body might throw arbitrarily
* } catch {
* case c: ControlThrowable => throw c // propagate
* case t: Exception => log(t) // log and suppress
* }
* }}}
*
* @author Miles Sabin
*/
trait ControlThrowable extends Throwable with NoStackTrace
Interested in Scala?
I send out weekly, personalized emails with articles and conference talks.
Subscribe now.