我想查询一些状态,并在故障情况下突破我的方法,但是这种情况也必须防范检查的异常。在检查布尔状态时,是否有更简单的方法来处理try/catch?
我正在处理它是这样:
try {
if (!isSomeState()) {
error("Failed to realize state");
return;
}
}
catch (SomeStateException ex) {
error("Failed to realize state");
return;
}
我可以抛出checked异常向下拖放到catch块。但是,这感觉很脏,因为异常是在重定向程序流程:
try {
if (!isSomeState())
throw new SomeStateException();
}
catch (SomeStateException ex) {
error("Failed to realize state");
return;
}
它没有意义有方法抛出此异常,因为我的意思的描述来处理它在此方法。
更新:
为了澄清,被查询的状态利用套接字I/O,因此投掷延伸IOException
;所以在这种情况下异常本身并不是多余的。
生成的布尔值表示某些状态是否设置为true
或false
。在此异常上返回false
没有任何意义,因为在继续查询其他状态时没有意义,否则该状态在false
上可能有效。
变化'isSomeState'方法,以便它抛出'SomeStateException',而不是返回'假' –
我已经添加了一些关于布尔状态意味着什么的补充澄清。 'false'是一个有效的结果,而异常表示一些'IOException'。 – Zhro