Scala convertido em um tipo variável

Eu tenho o seguinte código para transmitirvalor para o tipo depadrão:

def fct[T](value: Any, default: T): T = {
    val result = value.asInstanceOf[T]
    println(result, result.getClass.getName, result.isInstanceOf[T])
    result
}

val res = fct("foo", 42)

Qual resultado é:

(foo,java.lang.String,true)
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
    at scala.runtime.BoxesRunTime.unboxToInt(Test.sc2.tmp)
    at #worksheet#.res$lzycompute(Test.sc2.tmp:7)
    at #worksheet#.res(Test.sc2.tmp:7)
    at #worksheet#.#worksheet#(Test.sc2.tmp:7)

A pergunta é: por que o println é exibido? O elenco deve falhar. Eu tentei tentar / pegar as 3 linhas, mas nenhuma exceção é gerada durante a chamada de função.

questionAnswers(1)

yourAnswerToTheQuestion