Creo que a veces las excepciones son útiles para la construcción de DSL s. Lo sé, suena raro, pero como muchos idiomas no tienen las características que tiene Ruby (la palabra clave return es opcional porque se devuelve el resultado de la última expresión evaluada), usamos lo que podemos.
Por ejemplo, recientemente he tratado de construir un pequeño marco de pruebas de JavaScript, y quería una forma para que los usuarios de marco para poder decir:
skip();
pending("pending message");
fail("failure message");
en lugar de:
return skip();
return pending("pending message");
return fail("failure message");
Estas funciones serían funciones de la biblioteca que generan excepciones como una excepción SkipTest, por ejemplo. El único lugar recomendado para usarlos es dentro de los métodos de prueba. Estos métodos de prueba siempre se ejecutan en un bloque try/catch donde se trata cada tipo de excepción y, dependiendo de la excepción, el marco toma el paso apropiado.
Este es un ejemplo en el que he usado Excepciones para el flujo de control.
Aquí hay un pequeño ejemplo:
$.it("should offer means to explicitly mark a spec as failed", function() {
$.fail("this spec must fail");
});
debe ser wiki de la comunidad. – SilentGhost
Aparentemente, ninguna respuesta toca el uso de excepciones de JavaScript y Python para interrumpir el flujo de ejecución. –