下面的代码被认为是不好的做法吗?你认为这是可以做到的吗? 我们的目标是要始终更新状态,无论是成功(即调用到service.invoke(ID);返回正常)或失败...这是不好的做法?
@Autowired
private Service service;
public void onMessage(Message message) {
String id = null;
String status = "FAILED";
try {
id = ((TextMessage) message).getText();
status = service.invoke(id); //can throw unchecked exception
} catch (final JMSException e) {
throw new RuntimeException(e);
} finally {
if (StringUtils.isNumeric(id)) {
service.update(id, status);
}
}
}
将'default'更新代码放入'catch'中,一旦完成,就会抛出异常。避免使用'finally'子句。 – SudoRahul 2013-03-11 14:20:49
@JustinYang你究竟是什么意思? 'finally'将在'try'之后被调用。 “燕子”是什么意思? – 2013-03-11 14:21:25
@ bmorris591是正确的。执行'finally'后,'throw'仍然会发生。如果'finally'也抛出一个异常,它会被吞噬。 – 2013-03-11 14:22:20