From 8c968451354fc089c3eb76104f2c4230cae1433b Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Sat, 11 Jun 2022 09:31:25 -1000 Subject: [PATCH] Add missing exception handlers to radiotherm (#73349) --- homeassistant/components/radiotherm/__init__.py | 4 ++++ homeassistant/components/radiotherm/config_flow.py | 3 ++- homeassistant/components/radiotherm/coordinator.py | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/homeassistant/components/radiotherm/__init__.py b/homeassistant/components/radiotherm/__init__.py index 091d2bb8005..865e75257ec 100644 --- a/homeassistant/components/radiotherm/__init__.py +++ b/homeassistant/components/radiotherm/__init__.py @@ -4,6 +4,7 @@ from __future__ import annotations from collections.abc import Coroutine from socket import timeout from typing import Any, TypeVar +from urllib.error import URLError from radiotherm.validate import RadiothermTstatError @@ -31,6 +32,9 @@ async def _async_call_or_raise_not_ready( except RadiothermTstatError as ex: msg = f"{host} was busy (invalid value returned): {ex}" raise ConfigEntryNotReady(msg) from ex + except (OSError, URLError) as ex: + msg = f"{host} connection error: {ex}" + raise ConfigEntryNotReady(msg) from ex except timeout as ex: msg = f"{host} timed out waiting for a response: {ex}" raise ConfigEntryNotReady(msg) from ex diff --git a/homeassistant/components/radiotherm/config_flow.py b/homeassistant/components/radiotherm/config_flow.py index 030a3e6c022..97ae2c1be0a 100644 --- a/homeassistant/components/radiotherm/config_flow.py +++ b/homeassistant/components/radiotherm/config_flow.py @@ -4,6 +4,7 @@ from __future__ import annotations import logging from socket import timeout from typing import Any +from urllib.error import URLError from radiotherm.validate import RadiothermTstatError import voluptuous as vol @@ -29,7 +30,7 @@ async def validate_connection(hass: HomeAssistant, host: str) -> RadioThermInitD """Validate the connection.""" try: return await async_get_init_data(hass, host) - except (timeout, RadiothermTstatError) as ex: + except (timeout, RadiothermTstatError, URLError, OSError) as ex: raise CannotConnect(f"Failed to connect to {host}: {ex}") from ex diff --git a/homeassistant/components/radiotherm/coordinator.py b/homeassistant/components/radiotherm/coordinator.py index 4afa2c0662b..91acdee8710 100644 --- a/homeassistant/components/radiotherm/coordinator.py +++ b/homeassistant/components/radiotherm/coordinator.py @@ -4,6 +4,7 @@ from __future__ import annotations from datetime import timedelta import logging from socket import timeout +from urllib.error import URLError from radiotherm.validate import RadiothermTstatError @@ -38,6 +39,9 @@ class RadioThermUpdateCoordinator(DataUpdateCoordinator[RadioThermUpdate]): except RadiothermTstatError as ex: msg = f"{self._description} was busy (invalid value returned): {ex}" raise UpdateFailed(msg) from ex + except (OSError, URLError) as ex: + msg = f"{self._description} connection error: {ex}" + raise UpdateFailed(msg) from ex except timeout as ex: msg = f"{self._description}) timed out waiting for a response: {ex}" raise UpdateFailed(msg) from ex