我正在开发一个包装器(wrapper)以连接到一些特殊硬件的第三方函数库。因此,我想在一个MyHardwareObject中封装dll函数(bool Connect()
,void Disconnect()
等) 并提供连接和断开连接方法。
dll中的Connect函数可能会引发一些特定的异常,例如当硬件不存在时。对于应用程序而言,连接方法失败的原因被认为是不重要的,因此异常中包含的额外信息并不需要。
处理这些异常的最佳方式是什么?应该返回false
,还是在此处不处理异常,并在本来将处理连接方法返回 false
的级别上捕获它?
bool MyHardwareObject.Connect()
{
try
{
ThirdPartyLibrary.Connect();
}
catch (SomeException)
{
return false;
}
return true;
}
与其相反, bool MyHardwareObject.Connect()
{
ThirdPartyLibrary.Connect();
return true;
}
(或者在第二种情况下更好的是void MyHardwareObject.Connect()
,因为我们要么返回true,要么抛出异常?)
还有什么其它方案可供选择?最重要的是:为什么?