2017-01-20 13 views
-6

Я пытаюсь понять это. У меня есть эта строка кода:Почему экземпляр класса MqttClient должен быть заключен в try/catch?

MqttClient Client = new MqttClient(Broker, ClientId, Persistence); 

Но показывает ошибку «Необработанное исключение». Поэтому я исправил его, включив его с помощью try/catch.

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

Это действительно работает, но не может понять, почему это необходимо. Заранее спасибо.

+6

согласно javadocs * Throws: java.lang.IllegalArgumentException - если URI не начинается с "tcp: //", "ssl: //" или "local: //". java.lang.IllegalArgumentException - если clientId имеет значение NULL или имеет длину более 65535 символов MqttException - если возникла какая-либо другая проблема * –

ответ

3

экземпляр не должен быть окружен try/catch, но вызова конструктора делает, или же должен быть в пределах метода, который объявлен бросить это исключение.

-1

Как подсказывают некоторые ответы. Я проверил определение класса, где находятся следующие конструкторы:

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, который является еще один класс, который расширяет исключение. Огромное спасибо.

+2

'* Подсказка * по некоторым ответам. Отойди от него. * Явно указано * как ответами, так и комментариями. – EJP