From c16705241a45d7566042b355d5f79c44ff7c76c6 Mon Sep 17 00:00:00 2001 From: Mike Salvatore Date: Tue, 26 Apr 2022 01:41:20 -0400 Subject: [PATCH] Common: Use a more precise, custom UnregisteredTypeError in DIContainer --- monkey/common/di_container.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/monkey/common/di_container.py b/monkey/common/di_container.py index 9642ffb1f..55ba31923 100644 --- a/monkey/common/di_container.py +++ b/monkey/common/di_container.py @@ -4,6 +4,10 @@ from typing import Any, MutableMapping, Sequence, Type, TypeVar T = TypeVar("T") +class UnregisteredTypeError(ValueError): + pass + + class DIContainer: """ A dependency injection (DI) container that uses type annotations to resolve and inject @@ -45,7 +49,7 @@ class DIContainer: """ try: return self._resolve_type(type_) - except ValueError: + except UnregisteredTypeError: pass args = self.resolve_dependencies(type_) @@ -74,7 +78,7 @@ class DIContainer: elif type_ in self._instance_registry: return self._retrieve_registered_instance(type_) - raise ValueError(f'Failed to resolve unknown type "{type_.__name__}"') + raise UnregisteredTypeError(f'Failed to resolve unregistered type "{type_.__name__}"') def _construct_new_instance(self, arg_type: Type[T]) -> T: try: