try catch finally 关闭问题

try {
			//链接
			connection = connectionFactory.createQueueConnection();
			connection.start();
			//会话
			session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
			//目的队列
			Queue q = session.createQueue(queueName);
			//向目的队列发送消息的生产者
			mp = session.createProducer(q);
			//持久化存储
			mp.setDeliveryMode(DeliveryMode.PERSISTENT);
			//消息对象
			ObjectMessage om = session.createObjectMessage(msg);   
			mp.send(om);
		} catch (JMSException e) {
			e.printStackTrace();
			return false;
		} finally {
			if (mp != null) {
				try {
					mp.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
			if (session != null) {
				try {
					session.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
			if (connection != null) {
				try {
					connection.close();
				} catch (JMSException e) {
					e.printStackTrace();
				}
			}
		}


例子mp、session和connection关闭分别用用不用try catch, 而不是一个try catch。这样当mp.close出现异常的时候的保证后面的关闭正常运行,但是如果全部都是在一个try catch中的时候,当mp关闭出现问题,后面的session和connection的关闭将不会执行。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值