Eu particularmente sou do tipo que acredita que primeiro o sistema deve se consertar em caso de erro (famoso early return) mas existem casos que não estamos preparados para receber, então usar um exception é importante. Tanto para podermos debugar o código quanto para evitar a quebra de código em produção.
E ressaltando claro que mesmo a comunidade Ruby que possui o famoso TDD (Test Driven Development) ou Desenvolvimento movido (orientado) a testes.
Possui um sistema de exceções