src/Pure/General/exn.scala
changeset 45037 fe6d1ae7a065
parent 44634 50ce6f602931
child 46538 546d78f0d81f
     1.1 --- a/src/Pure/General/exn.scala	Thu Aug 11 20:32:44 2011 +0200
     1.2 +++ b/src/Pure/General/exn.scala	Fri Aug 12 11:41:26 2011 +0200
     1.3 @@ -9,7 +9,7 @@
     1.4  
     1.5  object Exn
     1.6  {
     1.7 -  /* runtime exceptions as values */
     1.8 +  /* exceptions as values */
     1.9  
    1.10    sealed abstract class Result[A]
    1.11    case class Res[A](res: A) extends Result[A]
    1.12 @@ -24,5 +24,17 @@
    1.13        case Res(x) => x
    1.14        case Exn(exn) => throw exn
    1.15      }
    1.16 +
    1.17 +
    1.18 +  /* message */
    1.19 +
    1.20 +  private val runtime_exception = Class.forName("java.lang.RuntimeException")
    1.21 +
    1.22 +  def message(exn: Throwable): String =
    1.23 +    if (exn.getClass == runtime_exception) {
    1.24 +      val msg = exn.getMessage
    1.25 +      if (msg == null) "Error" else msg
    1.26 +    }
    1.27 +    else exn.toString
    1.28  }
    1.29