src/Pure/General/exn.scala
changeset 48479 819f7a5f3e7f
parent 48476 44f56fe01528
child 50423 027d405951c8
--- a/src/Pure/General/exn.scala	Tue Jul 24 17:20:54 2012 +0200
+++ b/src/Pure/General/exn.scala	Tue Jul 24 17:33:19 2012 +0200
@@ -31,16 +31,19 @@
 
   private val runtime_exception = Class.forName("java.lang.RuntimeException")
 
-  def message(exn: Throwable): String =
+  def user_message(exn: Throwable): Option[String] =
     if (exn.isInstanceOf[java.io.IOException]) {
       val msg = exn.getMessage
-      if (msg == null) "I/O error"
-      else "I/O error: " + msg
+      Some(if (msg == null) "I/O error" else "I/O error: " + msg)
     }
     else if (exn.getClass == runtime_exception) {
       val msg = exn.getMessage
-      if (msg == null) "Error" else msg
+      Some(if (msg == null) "Error" else msg)
     }
-    else exn.toString
+    else if (exn.isInstanceOf[RuntimeException]) Some(exn.toString)
+    else None
+
+  def message(exn: Throwable): String =
+    user_message(exn) getOrElse exn.toString
 }