Java 为什么类MqttClient的实例必须由try/catch封闭?

Java 为什么类MqttClient的实例必须由try/catch封闭?,java,mqtt,iot,paho,Java,Mqtt,Iot,Paho,我在想办法。我有一行代码: MqttClient Client = new MqttClient(Broker, ClientId, Persistence); 但显示“未处理的异常”错误。因此,我用try/catch将其括起来进行了修复 try { MqttClient Client = new MqttClient(Broker, ClientId, Persistence); } catch (MqttException e) { e.print

我在想办法。我有一行代码:

MqttClient Client = new MqttClient(Broker, ClientId, Persistence);
但显示“未处理的异常”错误。因此,我用try/catch将其括起来进行了修复

 try {
        MqttClient Client = new MqttClient(Broker, ClientId, Persistence);
    } catch (MqttException e) {
        e.printStackTrace();
    }

它确实有效,但无法理解为什么需要这样做。提前感谢。

实例不需要被
try/catch
包围,但构造函数调用需要,否则需要在声明抛出该异常的方法中。

正如一些答案所暗示的那样。我检查了类定义,其中有以下构造函数:

public MqttClient(String serverURI, String clientId) throws MqttException {
    this(serverURI,clientId, new MqttDefaultFilePersistence());
}

public MqttClient(String serverURI, String clientId, MqttClientPersistence persistence) throws MqttException {
    aClient = new MqttAsyncClient(serverURI, clientId, persistence);
}
两者都会抛出MqttException,它是扩展异常的另一个类。非常感谢。

根据javadocs抛出:java.lang.IllegalArgumentException-如果URI不是以“tcp://”、“ssl://”或“local://”开头。java.lang.IllegalArgumentException-如果clientId为null或长度大于65535个字符MqttException-如果遇到“某些答案提示”的任何其他问题。别说了。通过回答和评论明确说明。