【发布时间】:2017-12-11 00:16:51
【问题描述】:
我不了解有关方法何时应引发异常或返回错误代码/boolean 结果的最佳实践。
具体来说,我有这种情况:有一个线程每 30 秒轮询一次设备(检索其状态)。
如果设备不可访问,应用程序不能停止,因为它不需要能够与提到的设备通信来执行它所做的所有其他操作。
所以,一般来说,线程代码如下:
while(true)
{
device.connect();
string st = device.getStatus();
updateStatus(st);
device.disconnect();
sleep(30);
}
目前,如果设备不在线,connect() 方法会抛出异常。
我认为,在这种情况下,让connect() 方法返回布尔结果以报告设备是否可访问也许是一种更好的做法,但我完全不确定。
上面是这样的:
while(true)
{
if(device.connect())
{
string st = device.getStatus();
device.disconnect();
updateStatus(st);
}
sleep(30);
}
实际上,当应用程序投入生产时,设备“应该”始终在线,这让我认为最好的选择是例外。
另一方面,应用程序可以在不与设备通信的情况下完美地保持执行。它未连接的唯一后果是与之关联的功能被禁用。这就是让我觉得boolean 返回值更好的原因。
如果设备未连接,我将有一个线程每 30 秒抛出一次异常。 即使捕获到异常,这在软件工程良好实践方面是否可以接受?
【问题讨论】:
标签: design-patterns error-handling exception-handling software-design