我正在開發一個第三方函數庫的包裝,它與一些特殊的硬件接口。所以基本上,我想用連接和斷開方法將dll函數(bool Connect()
,void Disconnect()
等)封裝在MyHardwareObject中。何時重新拋出異常,何時返回FALSE?
從DLL連接功能可以拋出一些具體的例外,例如,當在硬件不存在。對於應用程序,有關連接方法失敗原因的信息被認爲是不重要的,因此不需要包含在例外中的附加信息。
處理這些異常的最佳方式是什麼,返回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,或者拋出一個異常?)
或者還有什麼會怎麼做?最重要的是:爲什麼?
嗯,我並不是在暗示重要的信息,而是認真考慮哪些信息是重要的傳遞,哪些信息應該由Connect安全地處理失敗或成功,而不是盲目傳遞所有異常。所以我認爲我們大多同意。 – 2008-12-03 13:51:11