gpt4 book ai didi

javax.jms.ExceptionListener 与 try {} catch (JMSException) {}

转载 作者:行者123 更新时间:2023-11-29 05:34:10 24 4
gpt4 key购买 nike

我会尽量详细。也就是说,这是我的第一篇文章,所以请随时对形式/结构/任何内容提出批评,谢谢!

我正在实现一个 MessageListener (javax.jms.MessageListener),当我开始时,我的 IDE (Netbeans) 要求我设置一个 ExceptionListener。代码如下:

public class MessageQueueListener implements MessageListener
{
public void run()
{
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory(<ActiveMQ-address>);
Connection connection = connectionFactory.createConnection();
connection.setExceptionListener(new ExceptionListener()
{
@Override
public void onException(JMSException jmse)
{
//Handle Exception
}
});

Session session = _connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Destination destination = session.createQueue("NotificationMessageQueue");
Consumer consumer = _session.createConsumer(destination);
consumer.setMessageListener(this);
connection.start();
}
}

当时我并没有多想,因为为潜在的连接问题设置一个监听器是有意义的。但是,在我继续实现时,我在更适合我的用例的辅助方法上添加了 try/catch 语句。

例如:

public boolean postNotification(Message message)
{
String urlParameters = "dummy=dummy";

try
{
postRequest(urlParams); //Below
}
catch (MalformedURLException mfe)
{
//Handle Exception
}
catch (IOException ioe)
{
String eMessage = ioe.getMessage();
if(eMessage.contains("401"))
{
//Handle Exception
}
return false;
}

return true;
}

public void postRequest(String urlParams) throws MalformedURLException, IOException
{
URL url = new URL(<url-to-post-to>);

HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.addRequestProperty("Authorization", "Basic " + encodedLogin);
con.setRequestMethod("POST");
con.setDoOutput(true);
DataOutputStream wr = new DataOutputStream(con.getOutputStream());
wr.writeBytes(urlParams);
wr.flush();
wr.close();


BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null)
{
System.out.println(inputLine);
}
in.close();

con.disconnect();
}

无论如何,现在我的 run() 方法正在请求一个 try/catch 而项目开始时的 ExceptionListener 不再是有用。使用 try/catches 似乎一切正常,所以我很好奇发生了什么变化。我试图自己找出原因,但没有运气。

所以所有这些都是要问的上下文:使用 ExceptionListenertry/catches 有什么区别?使用一个或另一个是否有优势,至少对于像我这样的实现而言?

最佳答案

它们不是替代品。消费者需要一个 ExceptionListener,因为它是一个 MessageListener, 并且不调用连接上的任何方法,因此没有其他方式知道连接失败。但是,当您调用抛出已检查异常的方法时,您必须捕获它。编译器造就了你。

关于javax.jms.ExceptionListener 与 try {} catch (JMSException) {},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20081271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com