Excepciones y códigos de error: mezclándolos de la manera correcta

Estoy desarrollando una biblioteca de comunicación de dongle C ++. La biblioteca proporcionaría una interfaz unificada para comunicarse con una variedad de dongles de ejecución remota de código como SenseLock, KEYLOK, Guardant Code.

os dongles se basan en una tecnología de tarjeta inteligente y tienen un sistema de archivos interno y RAM.

Una rutina de operación típica involucra (1) enumeración de dongles conectados a los puertos USB, (2) conexión a un dongle seleccionado, (3) ejecución del módulo nombrado pasando la entrada y recolectando datos de salida.

Bueno, es trivial que todas estas etapas puedan terminar con un error. Puede haber muchos casos, pero los más generales son:

No se encuentra un dongle (seguro un caso fatal). Un fallo de conexión del dongle (un caso fatal). El módulo de ejecución especificado no se encuentra dentro del dongle (?). La operación solicitada falló debido al tiempo de espera (?). La operación solicitada necesita autorización (un caso recuperable, supongo).e produjo un error de memoria al ejecutar un módulo en un dispositivo de seguridad (seguro un caso fatal).Se produjo un error del sistema de archivos en un dispositivo de seguridad (seguro un caso fatal).

? - Todavía no sé si el caso se considera fatal o no.

Todavía estoy decidiendo si lanzar excepciones, devolver un código de error o implementar un método para ambos casos.

Las preguntas son:

¿Las excepciones reemplazan los códigos de error por completo o tal vez necesito usarlos solo para "casos fatales"?Mezclar dos paradigmas (excepciones y códigos de error) se considera una buena idea? ¿Es buena idea proporcionar al usuario dos concepciones? ¿Hay algún buen ejemplo de las excepciones y los códigos de error que mezclan la concepción? ¿Cómo implementaría esto?Update 1.

ería interesante ver más opiniones desde diferentes perspectivas, así que decidí agregar una recompensa de 100 reputación a la pregunta.

Respuestas a la pregunta(11)

Su respuesta a la pregunta