```scala scala> case class A(s: String) extends Exception defined class A scala> A("foo").toString res4: java.lang.String = A ``` You would expect `A(foo)` to be printed. If you let `A` extend any other class (as far as I have tested), `toString` behaves correctly.