Estoy desarrollando un contenedor para una biblioteca de funciones de terceros que interactúa con algún hardware especial. Básicamente, quiero encapsular las funciones dll (bool Connect()
, void Disconnect()
, etc.) en un MyHardwareObject con métodos de conexión y desconexión.Cuándo volver a lanzar una excepción, cuándo devolver FALSO?
La función Connect del dll puede arrojar algunas excepciones específicas, por ejemplo, cuando el hardware no está presente. Para la aplicación, la información sobre por qué falló el método de conexión se considera sin importancia, por lo que la información adicional contenida en la excepción no es necesaria.
¿Cuál es la mejor forma de manejar esas excepciones, devolviendo false
, o dejando la excepción no controlada aquí y atrapandola en el nivel que de otro modo manejaría el hecho de que el método de conexión retornó false
?
bool MyHardwareObject.Connect()
{
try
{
ThirdPartyLibrary.Connect();
}
catch (SomeException)
{
return false;
}
return true;
}
A diferencia de
bool MyHardwareObject.Connect()
{
ThirdPartyLibrary.Connect();
return true;
}
(o en el segundo caso mejor void MyHardwareObject.Connect()
, ya que cualquiera de vuelta verdad, o lanzar una excepción?)
O qué más se puede hacer? Y lo más importante: ¿por qué?
Bueno, no estaba sugiriendo enmascarar información importante, pero considerando seriamente qué información es importante transmitir, y qué información debería manejarse de manera segura por Connect fallando o teniendo éxito, en lugar de pasar ciegamente todas las excepciones. Así que creo que estamos de acuerdo en su mayoría. –