这是一种不好的做法吗?

时间:2013-03-11 14:16:28

标签: java

以下代码是否被视为不良做法?你认为可以这样做吗? 目标是始终更新状态,要么成功(即调用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);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

这取决于您的用例,是否必须根据上一步执行步骤。无论您可能收到什么异常,使用finally都可以执行您的第二步。

我建议在try...catch块之外进行第二步,这样只有当你有任何预期的异常并继续第二步时才会更新,否则,你的方法会抛出并退出。

答案 1 :(得分:0)

我认为你不应该使用消息监听器的实现,你应该独立于spring tech连接它们。只是以pojo为基础。将<jms:listener-container ><jms:listener>

一起使用