diff --git a/utils/misc/src/main/java/org/onlab/util/Tools.java b/utils/misc/src/main/java/org/onlab/util/Tools.java
index 533563b..e3a3a41 100644
--- a/utils/misc/src/main/java/org/onlab/util/Tools.java
+++ b/utils/misc/src/main/java/org/onlab/util/Tools.java
@@ -18,7 +18,6 @@
 import com.google.common.base.Strings;
 import com.google.common.primitives.UnsignedLongs;
 import com.google.common.util.concurrent.ThreadFactoryBuilder;
-
 import org.slf4j.Logger;
 
 import java.io.BufferedReader;
@@ -64,8 +63,8 @@
     public static ThreadFactory namedThreads(String pattern) {
         return new ThreadFactoryBuilder()
                 .setNameFormat(pattern)
-                        // FIXME remove UncaughtExceptionHandler before release
-                .setUncaughtExceptionHandler((t, e) -> log.error("Uncaught exception on {}", t.getName(), e)).build();
+                .setUncaughtExceptionHandler((t, e) -> log.error("Uncaught exception on " + t.getName(), e))
+                .build();
     }
 
     /**
@@ -84,8 +83,8 @@
         return new ThreadFactoryBuilder()
                 .setThreadFactory(groupedThreadFactory(groupName))
                 .setNameFormat(groupName.replace(GroupedThreadFactory.DELIMITER, "-") + "-" + pattern)
-                        // FIXME remove UncaughtExceptionHandler before release
-                .setUncaughtExceptionHandler((t, e) -> log.error("Uncaught exception on {}", t.getName(), e)).build();
+                .setUncaughtExceptionHandler((t, e) -> log.error("Uncaught exception on " + t.getName(), e))
+                .build();
     }
 
     /**
@@ -242,6 +241,7 @@
 
     /**
      * Returns a human friendly time ago string for a specified system time.
+     *
      * @param unixTime system time in millis
      * @return human friendly time ago
      */
diff --git a/utils/misc/src/test/java/org/onlab/util/ToolsTest.java b/utils/misc/src/test/java/org/onlab/util/ToolsTest.java
index 569139a..584e72a 100644
--- a/utils/misc/src/test/java/org/onlab/util/ToolsTest.java
+++ b/utils/misc/src/test/java/org/onlab/util/ToolsTest.java
@@ -21,6 +21,7 @@
 import java.util.concurrent.ThreadFactory;
 
 import static org.junit.Assert.*;
+import static org.onlab.junit.TestTools.assertAfter;
 
 /**
  * Test of the miscellaneous tools.
@@ -47,18 +48,29 @@
     }
 
     @Test
-    public  void namedThreads() {
+    public void namedThreads() {
         ThreadFactory f = Tools.namedThreads("foo-%d");
         Thread t = f.newThread(() -> TestTools.print("yo"));
         assertTrue("wrong pattern", t.getName().startsWith("foo-"));
     }
 
     @Test
-    public  void groupedThreads() {
+    public void groupedThreads() {
         ThreadFactory f = Tools.groupedThreads("foo/bar-me", "foo-%d");
         Thread t = f.newThread(() -> TestTools.print("yo"));
         assertTrue("wrong pattern", t.getName().startsWith("foo-bar-me-foo-"));
         assertTrue("wrong group", t.getThreadGroup().getName().equals("foo/bar-me"));
     }
 
+    @Test
+    public void exceptionHandler() throws InterruptedException {
+        ThreadFactory f = Tools.namedThreads("foo");
+        Thread t = f.newThread(() -> {
+            throw new IllegalStateException("BOOM!");
+        });
+        assertNotNull("thread should have exception handler", t.getUncaughtExceptionHandler());
+        t.start();
+        assertAfter(100, () -> assertEquals("incorrect thread state", Thread.State.TERMINATED, t.getState()));
+    }
+
 }
