Mi caso específico aquí es que el usuario puede pasar una cadena a la aplicación, la aplicación la analiza y la asigna a objetos estructurados. A veces, el usuario puede escribir algo no válido. Por ejemplo, su aporte puede describir a una persona pero pueden decir que su edad es "manzana". El comportamiento correcto en ese caso es revertir la transacción y decirle al usuario que ocurrió un error y que tendrá que volver a intentarlo. Puede haber un requisito para informar sobre cada error que podamos encontrar en la entrada, no solo el primero.
En este caso, sostuve que deberíamos lanzar una excepción. No estuvo de acuerdo y dijo: "Las excepciones deben ser excepcionales: se espera que el usuario pueda ingresar datos no válidos, por lo que este no es un caso excepcional". Realmente no sabía cómo argumentar ese punto, porque por definición de la palabra, él Parece estar en lo cierto.
Pero, entiendo que esta es la razón por la cual se inventaron Excepciones en primer lugar. Solía ser que tenía que inspeccionar el resultado para ver si ocurría un error. Si no lo comprobaste, podrían pasar cosas malas sin que te des cuenta.
Sin excepciones, cada nivel de la pila necesita verificar el resultado de los métodos que llama y si un programador olvida ingresar en uno de estos niveles, el código podría proceder accidentalmente y guardar datos no válidos (por ejemplo). Parece más propenso a errores de esa manera.
De todos modos, siéntase libre de corregir cualquier cosa que haya dicho aquí. Mi pregunta principal es si alguien dice que las Excepciones deberían ser excepcionales, ¿cómo sé si mi caso es excepcional?