Estoy luchando con una pregunta muy simple:
Ahora estoy trabajando en una aplicación de servidor, y necesito inventar una jerarquía para las excepciones (algunas excepciones ya existen, pero se necesita un marco general). ¿Cómo empiezo a hacer esto?
Estoy pensando en seguir esta estrategia:
1) ¿Qué va mal?
- Se pregunta algo, que no está permitido.
- Se pregunta algo, está permitido, pero no funciona debido a parámetros incorrectos.
- Se pregunta algo, está permitido, pero no funciona debido a errores internos.
2) ¿Quién está lanzando la solicitud?
- La aplicación cliente
- Otra aplicación de servidor
3) Entrega de mensajes: como se trata de una aplicación de servidor, se trata de recibir y enviar mensajes. ¿Y qué pasa si el envío de un mensaje sale mal?
Como tal, podríamos obtener los siguientes tipos de excepción:
- ServerNotAllowedException
- ClientNotAllowedException
- ServerParameterException
- ClientParameterException
- InternalException (en caso de que el servidor no sepa de dónde proviene la solicitud)
- ServerInternalException
- ClientInternalException
- MessageHandlingException
Este es un enfoque muy general para definir la jerarquía de excepciones, pero me temo que me pueden faltar algunos casos obvios. ¿Tiene ideas sobre qué áreas no estoy cubriendo, conoce algún inconveniente de este método o hay un enfoque más general para este tipo de preguntas (en el último caso, ¿dónde puedo encontrarlo?)
Gracias por adelantado
catch
bloques que uso, no tengo mucho más uso para la excepción que el mensaje de error que contiene. Realmente no tengo nada diferente que pueda hacer por una excepción involucrada en no leer un archivo, ya que no se puede asignar memoria durante el proceso de lectura, por lo que tiendo a captar std::exception
e informar el mensaje de error que contiene, tal vez decorar con "Failed to open file: %s", ex.what()
un buffer de pila antes de imprimirlo.
catch
bloques diferentes en un solo sitio de recuperación, pero a menudo es solo ignorar el mensaje dentro de la excepción e imprimir un mensaje más localizado ...