Objetos comerciales, validación y excepciones

He estado leyendo algunas preguntas y respuestas sobre las excepciones y su uso. Parece ser una fuerte opinión de que las excepciones deben plantearse solo para casos excepcionales no manejados. Eso me lleva a preguntarme cómo funciona la validación con objetos de negocios.

Vamos a decir que tengo un objeto comercial con captadores / establecedores para las propiedades del objeto. Supongamos que necesito validar que el valor está entre 10 y 20. Esta es una regla comercial, por lo que pertenece a mi objeto comercial. Entonces eso parece implicarme que el código de validación va en mi setter. Ahora tengo mi UI enlazado a las propiedades del objeto de datos. El usuario ingresa 5, por lo que la regla debe fallar y no se le permite salir del cuadro de texto. . La IU está vinculada por datos a la propiedad, por lo que se llamará al configurador, se verificará la regla y falló. Si levanto una excepción de mi objeto comercial para decir que la regla falló, la interfaz de usuario lo detectaría. Pero eso parece ir en contra del uso preferido para las excepciones. Dado que es un setter, realmente no va a tener un "resultado" para el setter. Si configuro otra bandera en el objeto, eso implicaría que la interfaz de usuario tiene que verificar esa bandera después de cada interacción de la interfaz de usuario.

Entonces, ¿cómo debería funcionar la validación?

Edit: Probablemente he usado un ejemplo demasiado simplificado aquí. Algo así como la verificación de rango anterior podría manejarse fácilmente por la interfaz de usuario, pero ¿y si la valuación fuera más complicada? el objeto de negocio calcula un número basado en la entrada y si ese número calculado está fuera de rango, debe ser recusado. Esta es una lógica más complicada que no debería estar en la interfaz de usuario.

También se consideran los datos adicionales ingresados en función de un campo ya ingresado. Por ejemplo, tengo que ingresar un artículo en el pedido para obtener cierta información, como existencias disponibles, costo actual, etc. El usuario puede requerir esta información para tomar decisiones sobre el ingreso adicional (por ejemplo, cuántas unidades pedir) o puede ser necesario en orden para que se realice una validación adicional. ¿Debería un usuario poder ingresar otros campos si el elemento no es válido? ¿Cuál sería el punto

Respuestas a la pregunta(36)

Su respuesta a la pregunta