diff options
author | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-22 17:31:20 -0800 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@typesafe.com> | 2013-11-22 17:31:20 -0800 |
commit | 2f7396d97f99f4ed2817566f36416e16b10b7ffc (patch) | |
tree | b3eeebb2d9f83d635d6223e3ebcb0d94dae76f87 | |
parent | 112ae862e0530c4e1148c2e67997e4c242c566bd (diff) | |
parent | 64603653f82082431941cb29ad317b669822f28e (diff) | |
download | scala-2f7396d97f99f4ed2817566f36416e16b10b7ffc.tar.gz scala-2f7396d97f99f4ed2817566f36416e16b10b7ffc.tar.bz2 scala-2f7396d97f99f4ed2817566f36416e16b10b7ffc.zip |
Merge pull request #3182 from soc/SI-7999
s.u.c.NonFatal: StackOverflowError is fatal
-rw-r--r-- | src/library/scala/util/control/NonFatal.scala | 4 | ||||
-rw-r--r-- | test/files/jvm/non-fatal-tests.scala | 4 |
2 files changed, 3 insertions, 5 deletions
diff --git a/src/library/scala/util/control/NonFatal.scala b/src/library/scala/util/control/NonFatal.scala index 11fb988e8e..9d3dfea074 100644 --- a/src/library/scala/util/control/NonFatal.scala +++ b/src/library/scala/util/control/NonFatal.scala @@ -11,9 +11,8 @@ package util.control /** * Extractor of non-fatal Throwables. Will not match fatal errors like `VirtualMachineError` - * (for example, `OutOfMemoryError`, a subclass of `VirtualMachineError`), `ThreadDeath`, + * (for example, `OutOfMemoryError` and `StackOverflowError`, subclasses of `VirtualMachineError`), `ThreadDeath`, * `LinkageError`, `InterruptedException`, `ControlThrowable`. - * However, `StackOverflowError` is matched, i.e. considered non-fatal. * * Note that [[scala.util.control.ControlThrowable]], an internal Throwable, is not matched by * `NonFatal` (and would therefore be thrown). @@ -34,7 +33,6 @@ object NonFatal { * Returns true if the provided `Throwable` is to be considered non-fatal, or false if it is to be considered fatal */ def apply(t: Throwable): Boolean = t match { - case _: StackOverflowError => true // StackOverflowError ok even though it is a VirtualMachineError // VirtualMachineError includes OutOfMemoryError and other fatal errors case _: VirtualMachineError | _: ThreadDeath | _: InterruptedException | _: LinkageError | _: ControlThrowable => false case _ => true diff --git a/test/files/jvm/non-fatal-tests.scala b/test/files/jvm/non-fatal-tests.scala index 791b1d3100..1ff7ee516e 100644 --- a/test/files/jvm/non-fatal-tests.scala +++ b/test/files/jvm/non-fatal-tests.scala @@ -4,8 +4,7 @@ trait NonFatalTests { //NonFatals val nonFatals: Seq[Throwable] = - Seq(new StackOverflowError, - new RuntimeException, + Seq(new RuntimeException, new Exception, new Throwable, new NotImplementedError) @@ -13,6 +12,7 @@ trait NonFatalTests { //Fatals val fatals: Seq[Throwable] = Seq(new InterruptedException, + new StackOverflowError, new OutOfMemoryError, new LinkageError, new VirtualMachineError {}, |