哪些方法应该抛出异常,哪些方法应该 return 一个布尔值
Which methods should throw exceptions and which ones should return a boolean value
我不了解有关方法何时应抛出异常或 return 错误代码/boolean
结果的最佳实践。
具体来说,我有这种情况:有一个线程每 30 秒轮询一次设备(检索其状态)。
如果设备不可访问,应用程序不得停止,因为它不需要能够与提到的设备通信来执行它所做的所有其他操作。
所以,一般来说,线程代码是这样的:
while(true)
{
device.connect();
string st = device.getStatus();
updateStatus(st);
device.disconnect();
sleep(30);
}
目前,如果设备不在线,connect()
方法会抛出异常。
我认为,在这种情况下,将 connect()
方法设为 return 布尔结果以报告设备是否可达可能是更好的做法,但是我完全不确定。
上面看起来像这样:
while(true)
{
if(device.connect())
{
string st = device.getStatus();
device.disconnect();
updateStatus(st);
}
sleep(30);
}
实际上,当应用程序处于生产状态时,设备 "should" 始终在线,这让我认为最好的选择是一个例外。
另一方面,应用程序可以在不与设备通信的情况下完美地保持执行。它未连接的唯一后果是与其关联的功能被禁用。这就是让我认为 boolean
return 值更好的原因。
如果设备未连接,我将有一个线程每 30 秒抛出一个异常。 即使捕获了异常,这在软件工程良好实践方面是否可以接受?
根据原始问题评论中链接到的线程,异常确实使您能够提供有关实际故障的更多详细信息。在这种情况下,布尔值可能是限制性的——如果设备没有连接,或者它连接了什么但没有响应怎么办?异常可以清楚地表明这两种情况,而布尔值则不能。
布尔值,在我看来,当应用程序有两个可能的结果时它仍然可以运行 'normally' - 例如验证,它工作得很好。例如,如果您的应用程序需要验证电子邮件地址,而用户输入了无效的电子邮件地址,那没关系 - 应用程序可以正常继续,只是提示用户修复验证错误。
但是,如果某些事情干扰了应用程序的正常执行,例如无法访问设备,我会例外。毕竟,这是一种特殊情况。对于它的价值,如果我用 Java 这样的语言编写代码,我会使用检查异常 since it's something that the application can reasonably be expected to recover from.
我不了解有关方法何时应抛出异常或 return 错误代码/boolean
结果的最佳实践。
具体来说,我有这种情况:有一个线程每 30 秒轮询一次设备(检索其状态)。
如果设备不可访问,应用程序不得停止,因为它不需要能够与提到的设备通信来执行它所做的所有其他操作。
所以,一般来说,线程代码是这样的:
while(true)
{
device.connect();
string st = device.getStatus();
updateStatus(st);
device.disconnect();
sleep(30);
}
目前,如果设备不在线,connect()
方法会抛出异常。
我认为,在这种情况下,将 connect()
方法设为 return 布尔结果以报告设备是否可达可能是更好的做法,但是我完全不确定。
上面看起来像这样:
while(true)
{
if(device.connect())
{
string st = device.getStatus();
device.disconnect();
updateStatus(st);
}
sleep(30);
}
实际上,当应用程序处于生产状态时,设备 "should" 始终在线,这让我认为最好的选择是一个例外。
另一方面,应用程序可以在不与设备通信的情况下完美地保持执行。它未连接的唯一后果是与其关联的功能被禁用。这就是让我认为 boolean
return 值更好的原因。
如果设备未连接,我将有一个线程每 30 秒抛出一个异常。 即使捕获了异常,这在软件工程良好实践方面是否可以接受?
根据原始问题评论中链接到的线程,异常确实使您能够提供有关实际故障的更多详细信息。在这种情况下,布尔值可能是限制性的——如果设备没有连接,或者它连接了什么但没有响应怎么办?异常可以清楚地表明这两种情况,而布尔值则不能。
布尔值,在我看来,当应用程序有两个可能的结果时它仍然可以运行 'normally' - 例如验证,它工作得很好。例如,如果您的应用程序需要验证电子邮件地址,而用户输入了无效的电子邮件地址,那没关系 - 应用程序可以正常继续,只是提示用户修复验证错误。
但是,如果某些事情干扰了应用程序的正常执行,例如无法访问设备,我会例外。毕竟,这是一种特殊情况。对于它的价值,如果我用 Java 这样的语言编写代码,我会使用检查异常 since it's something that the application can reasonably be expected to recover from.