Design patterns 哪些方法应该抛出异常,哪些方法应该返回布尔值
我不了解关于方法何时应该抛出异常或返回错误代码/Design patterns 哪些方法应该抛出异常,哪些方法应该返回布尔值,design-patterns,error-handling,exception-handling,software-design,Design Patterns,Error Handling,Exception Handling,Software Design,我不了解关于方法何时应该抛出异常或返回错误代码/booleanresult的最佳实践 具体来说,我遇到了这种情况:有一个线程每30秒轮询一个设备(检索其状态) 如果无法访问设备,则应用程序不得停止,因为它不需要能够与所述设备通信以执行其执行的所有其他操作 因此,一般来说,线程代码如下所示: while(true) { device.connect(); string st = device.getStatus(); updateStatus(st); device.disconn
boolean
result的最佳实践
具体来说,我遇到了这种情况:有一个线程每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);
}
实际上,当应用程序投入生产时,设备“应该”始终在线,这使我认为最好的选择是例外
另一方面,应用程序可以在不与设备通信的情况下完美地保持执行。未连接的唯一后果是与之相关的功能被禁用。这就是为什么我认为布尔值
返回值更好的原因
如果设备没有连接,我将有一个线程每30秒抛出一个异常即使捕获到异常,就软件工程良好实践而言,这是否可以接受?根据原始问题评论中链接到的线程,异常确实使您能够提供有关实际故障的更多详细信息。在这种情况下,布尔值可能是限制性的-如果设备未连接,或者设备已连接但未响应,该怎么办?异常可以清楚地指示这两个条件,而布尔值则不能 在我看来,布尔值在应用程序有两种可能的结果仍然可以“正常”运行时工作得很好,比如验证。例如,如果你的应用程序需要验证电子邮件地址,而用户输入了无效的电子邮件地址,那没关系-应用程序可以正常继续,只需提示用户修复验证错误 但是,如果有什么东西干扰了应用程序的正常执行,例如设备不可访问,我将使用异常。毕竟,这是一个例外情况。值得一提的是,如果我用Java这样的语言编写代码,我会使用选中的异常。可能的重复: