From 236143be8dc79d8890984ba5946a0f88f9f0ad62 Mon Sep 17 00:00:00 2001
From: "Paolo G. Giarrusso"
Date: Sun, 16 Dec 2012 20:30:30 +0100
Subject: [PATCH] Silence boring Eclipse warnings: catching all exceptions
Here I make explicit where catching all exceptions is intended.
Mark Harrah corrected one decision during review.
---
launch/src/main/scala/xsbt/boot/Boot.scala | 9 +++++++--
main/command/src/main/scala/sbt/MainLoop.scala | 2 +-
run/src/main/scala/sbt/TrapExit.scala | 2 +-
util/collection/src/test/scala/SettingsTest.scala | 2 +-
util/control/src/main/scala/sbt/ErrorHandling.scala | 2 +-
util/log/src/main/scala/sbt/BufferedLogger.scala | 2 +-
6 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/launch/src/main/scala/xsbt/boot/Boot.scala b/launch/src/main/scala/xsbt/boot/Boot.scala
index 17927b437..f70d041ad 100644
--- a/launch/src/main/scala/xsbt/boot/Boot.scala
+++ b/launch/src/main/scala/xsbt/boot/Boot.scala
@@ -34,7 +34,7 @@ object Boot
case b: BootException => errorAndExit(b.toString)
case r: xsbti.RetrieveException => errorAndExit("Error: " + r.getMessage)
case r: xsbti.FullReload => Some(r.arguments)
- case e =>
+ case e: Throwable =>
e.printStackTrace
errorAndExit(Pre.prefixError(e.toString))
}
@@ -55,7 +55,12 @@ object Boot
System.setProperty("sbt.log.format", "true")
} catch {
case ignore: ClassNotFoundException =>
- case ex => println("Jansi found on class path but initialization failed: " + ex)
+ /* The below code intentionally traps everything. It technically shouldn't trap the
+ * non-StackOverflowError VirtualMachineErrors and AWTError would be weird, but this is PermGen
+ * mitigation code that should not render sbt completely unusable if jansi initialization fails.
+ * [From Mark Harrah, https://github.com/sbt/sbt/pull/633#issuecomment-11957578].
+ */
+ case ex: Throwable => println("Jansi found on class path but initialization failed: " + ex)
}
}
}
diff --git a/main/command/src/main/scala/sbt/MainLoop.scala b/main/command/src/main/scala/sbt/MainLoop.scala
index 2b912ee5b..d3c3e703c 100644
--- a/main/command/src/main/scala/sbt/MainLoop.scala
+++ b/main/command/src/main/scala/sbt/MainLoop.scala
@@ -35,7 +35,7 @@ object MainLoop
case e: xsbti.FullReload =>
deleteLastLog(logBacking)
throw e // pass along a reboot request
- case e =>
+ case e: Throwable =>
System.err.println("sbt appears to be exiting abnormally.\n The log file for this session is at " + logBacking.file)
deleteLastLog(logBacking)
throw e
diff --git a/run/src/main/scala/sbt/TrapExit.scala b/run/src/main/scala/sbt/TrapExit.scala
index 7c8b65e7d..f8d31442e 100644
--- a/run/src/main/scala/sbt/TrapExit.scala
+++ b/run/src/main/scala/sbt/TrapExit.scala
@@ -34,7 +34,7 @@ object TrapExit
catch
{
case e: TrapExitSecurityException => throw e
- case x =>
+ case x: Throwable =>
code.set(1) //exceptions in the main thread cause the exit code to be 1
throw x
}
diff --git a/util/collection/src/test/scala/SettingsTest.scala b/util/collection/src/test/scala/SettingsTest.scala
index f4796b76c..9ff703526 100644
--- a/util/collection/src/test/scala/SettingsTest.scala
+++ b/util/collection/src/test/scala/SettingsTest.scala
@@ -82,7 +82,7 @@ object SettingsTest extends Properties("settings")
def evaluate(settings: Seq[Setting[_]]): Settings[Scope] =
try { make(settings)(delegates, scopeLocal, showFullKey) }
- catch { case e => e.printStackTrace; throw e }
+ catch { case e: Throwable => e.printStackTrace; throw e }
}
// This setup is a workaround for module synchronization issues
final class CCR(intermediate: Int)
diff --git a/util/control/src/main/scala/sbt/ErrorHandling.scala b/util/control/src/main/scala/sbt/ErrorHandling.scala
index a1ba760f3..b6e616ae3 100644
--- a/util/control/src/main/scala/sbt/ErrorHandling.scala
+++ b/util/control/src/main/scala/sbt/ErrorHandling.scala
@@ -20,7 +20,7 @@ object ErrorHandling
{
case ex @ (_: Exception | _: StackOverflowError) => Left(ex)
case err @ (_: ThreadDeath | _: VirtualMachineError) => throw err
- case x => Left(x)
+ case x: Throwable => Left(x)
}
def convert[T](f: => T): Either[Exception, T] =
diff --git a/util/log/src/main/scala/sbt/BufferedLogger.scala b/util/log/src/main/scala/sbt/BufferedLogger.scala
index 2e04b81f2..0b9d7a593 100644
--- a/util/log/src/main/scala/sbt/BufferedLogger.scala
+++ b/util/log/src/main/scala/sbt/BufferedLogger.scala
@@ -33,7 +33,7 @@ class BufferedLogger(delegate: AbstractLogger) extends BasicLogger
clear()
result
}
- catch { case e => stopQuietly(); throw e }
+ catch { case e: Throwable => stopQuietly(); throw e }
}
def stopQuietly() = synchronized { try { stop() } catch { case e: Exception => () } }