Hola,
No estoy sabiendo cómo manejar las excepciones, por ejemplo, cuando se pide:
agregarusuario: nombreUsuario alCanal: nombreCanal
Posibles escenarios (que tengo en mente):
✖ Tal usuario no existe (no fue agregado previamente en AlgoChat)
✖ Tal canal no existe (no fue agregado previamente en AlgoChat)
Maneras de manejar estos escenarios:
✔ Envío una señal a Pharo para que detenga/termine la ejecución del programa y levante una ventana con el error (como cuando hacés 2/0 en el Playground).
✔ Creo el usuario, y creo el canal, y agrego el usuario al canal.
✔ Me lavo las manos escribiendo en mi contrato, el documento a entregar, que no es válido usar tal mensaje sin que tales usuarios y tales canales no hayan sido agregados en AlgoChat previamente.
¿Cualquiera de las maneras es válida? ¿Alguna apela más a la solución esperada por los correctores (alguna me da más puntaje)?
Saludos
Hola Juan,
Hasta el momento no vieron excepciones, así que no es un punto que se va a evaluar en el Tp. Te recomiendo que vayas por la tercera opción que proponés.
Saludos,
Sebastián
Hola Juan Carlos:
El enfoque esperado es el de la creación de una nueva clase específica para tu excepción que sea lanzada por el objeto que consideres tenga la responsabilidad de hacerlos según tu modelo.
Esa clase no necesita tener ningún método implementado. Simplemente debe heredar de la clase Error de Pharo y le debés enviar el mensaje signal.
Luego, podés decidir atraparla en otra clase de tu modelo o dejar que sea manejada por tus pruebas unitarias mediante el mensaje should: raise:
Esto está explicado detalladamente en el capítulo 9 del libro de Fontela, y en el capítulo 13 del libro Deep Into Pharo. (ambos accesibles de manera gratuita online y referenciados en la bibliografía del curso).
Además contamos con este tutorial de nuestro canal de YouTube con una explicación paso a paso.
Tené en cuenta que la decisión del modelo es importante para determinar quién debe tener la responsabilidad de lanzar la excepción y debés crear todas las pruebas automatizadas necesarias para todos los casos borde posibles.
Saludos,
Tomás
Aclaración: Tal como dijo Sebastián más arriba, como el tema todavía no se vio en clase, no se evaluará en el TP y pueden optar por no manejar ese tipo de situaciones. Si se animan pueden crear las excepciones como mencioné en mi mensaje anterior.
Perdón por la confusión generada.