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 => () } }