gpt4 book ai didi

language-agnostic - 何时重新抛出异常,何时返回 FALSE?

转载 作者:行者123 更新时间:2023-12-03 21:15:24 25 4
gpt4 key购买 nike

我正在为与一些特殊硬件接口(interface)的第三方函数库开发一个包装器。所以基本上,我想用连接和断开方法将 dll 函数(bool Connect()void Disconnect() 等)封装在 MyHardwareObject 中。

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,要么抛出异常?)

或者你还会做什么?最重要的是:为什么?

最佳答案

在我看来,第一种情况肯定比第二种情况好。您希望您的硬件库以您的用户不必确切知道其中的内容的方式环绕第三方库。
如果除了 true 或 false 之外,您还需要错误处理的更多细节,您可以考虑重新抛出您自己的异常,将第三方库中的异常转换为与您自己的代码更一致的东西。

关于language-agnostic - 何时重新抛出异常,何时返回 FALSE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/337066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com