Lanzar excepciones en Scala, ¿cuál es la “regla oficial”?

Estoy siguiendo el curso de Scala en Coursera. También he empezado a leer el libro Scala de Odersky.

Lo que escucho a menudo es que no es una buena idea lanzar excepciones en los idiomas funcionales, porque interrumpe el flujo de control y generalmente devolvemos un error con el error o el éxito. Parece también que Scala 2.10 proporcionará el Try que va en esa dirección.

Pero en el libro y en el curso, Martin Odersky no parece decir (al menos por ahora) que las excepciones son malas, y las usa mucho. También noté que los métodos afirman / requieren ...

Finalmente estoy un poco confundido porque me gustaría seguir las mejores prácticas, pero no son claras y el lenguaje parece ir en ambas direcciones ...

¿Puede alguien explicarme qué debo usar en qué caso?