Вы можете объявить метод throw исключение, если вы не можете (или это не удобно) обрабатывать исключение внутри метода.
В вашем случае вы вызывают метод setRadius
внутри конструктора. Если вы считаете, что удобно обрабатывать исключение (которое выбрано setRadius
) внутри конструктора, вы можете использовать предложение try-catch
:
public CircleWithException(double newRadius) throws InvalidRadiusException {
try {
setRadius(newRadius);
numberOfObjects++;
} catch (InvalidRadiusException e) {
setRadius(0); // for example
}
}
Блок catch
содержит то, что вы хотите сделать, если было выбрано исключение. В этом случае я устанавливаю радиус в 0
, но вы можете это изменить.
Помните, что это зависит от реализации ваших классов и от того, как вы хотите, чтобы они работали. Если вы не хотите, чтобы конструктор обрабатывал это исключение, вы можете бросить его (как вы уже делаете) и обрабатывать его другими методами.
Это нормальное поведение. Вы используете петлевой IP-адрес для сетевых коммуникаций между приложением UWP и другим процессом (другим приложением UWP или настольным приложением). Это ограничено изоляцией сети.
Вы можете запустить свой сервер и клиент на другом компьютере для тестирования. См. Документ Как включить обратную связь и устранить проблемы изоляции сети (приложения Windows Runtime) . Он объяснил этот сценарий:
Loopback разрешен только для целей разработки. Использование приложением среды выполнения Windows, установленным вне Visual Studio, не допускается. Кроме того, приложение среды выполнения Windows может использовать петлю IP-адреса только в качестве целевого адреса для запроса клиентской сети. Поэтому приложение времени выполнения Windows, которое использует DatagramSocket или StreamSocketListener для прослушивания IP-адреса обратной связи, не получает никаких входящих пакетов.
blockquote>В вашем случае, если вы просто хотите проверить, может ли приложение UWP успешно отправить сообщение вашему подписчику Python. Вы можете запустить приложение UWP на другом компьютере. Я использовал ваш код для создания приложения UWP для отправки сообщения и создания консольного приложения в качестве подписчика, которое запускается на другом компьютере. Консольное приложение может получить сообщение.
Обратите внимание, что поскольку вашему приложению UWP требуется доступ к сети во время выполнения, вам необходимо включить возможности Netwrok (
Internet(Client)
Internet(Client & Server)
Private Networks(Client & Server)
) в файле Package.appxmanifest.