【问题标题】:Exception handling in JmsTemplate sendJmsTemplate 中的异常处理发送
【发布时间】:2013-06-28 20:52:41
【问题描述】:

我想使用 jmstemplate(使用 activemq jms 代理)发送一个大字符串消息(3-5 MB)。在发送消息的过程中,我关闭了我的代理;为什么我不能在 catch(Exception e) 中捕获抛出的异常?我应该如何处理这个异常?

public class MessageSenderServiceImpl implements MessageSenderService
{
    private JmsTemplate jmsTemplate;

    @Override
    @Transactional
    public void sendMessage(final String messageContent, final String destination) throws SendingMessageException
    {
        try
        {
            jmsTemplate.send(destination, new MessageCreator()
            {
                @Override
                public Message createMessage(Session session) throws JMSException
                {
                    BytesMessage byteMessage = session.createBytesMessage();
                    try
                    {
                        byteMessage.writeBytes(messageContent.getBytes("UTF-8"));
                        return byteMessage;
                    } 
                    catch (UnsupportedEncodingException e)
                    {
                        e.printStackTrace();
                        throw new JMSException(e.getMessage());
                    }
                }
            });         
        }
        catch(Exception e)
        {
            throw new SendingMessageException(e.getMessage(),e);
        }
    }

    public void setJmsTemplate(JmsTemplate jmsTemplate)
    {
        this.jmsTemplate = jmsTemplate;
    }
}

提前致谢。

【问题讨论】:

  • 您遇到了哪个异常?日志文件中有什么内容?
  • 您解决了这个问题吗?我看到类似的东西。有没有可能 JmsTemplate 没有抛出异常?

标签: java exception-handling jms activemq jmstemplate


【解决方案1】:

这只是一个猜测,但可能是因为 Spring 的 JmsTemplate 将异常重新抛出为 JmsException ,这是一个运行时异常,因此您需要捕获 Throwable 才能真正捕获它。

【讨论】:

  • RuntimeException 扩展了异常,我认为。
  • 是的,你是对的 - 请忽略我的评论 - 我正在看这篇文章,但错过了你已经赶上了顶级例外:forum.springsource.org/…
  • 不建议将异常捕获到抽象。我给你一个点给我异常的名称:) JmsException
  • 这大多是错误的。 JmsException 不是 RuntimeException 的子类。我建议遵循以下捕获Throwable 的准则:如果您不确定是否应该捕获Throwable,则不应该。
猜你喜欢
  • 1970-01-01
  • 2019-10-04
  • 2020-06-26
  • 1970-01-01
  • 1970-01-01
  • 2013-08-13
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多