From 26a7a92a136ef144355f3d07a572926fbe9dc8f1 Mon Sep 17 00:00:00 2001
From: Mashiro <57566630+HAOCHENYE@users.noreply.github.com>
Date: Wed, 29 Mar 2023 16:15:42 +0800
Subject: [PATCH] [Enhance] Do no catch unnecessary exceptions in registry
 (#1010)

---
 mmengine/registry/registry.py | 27 ++++++++++++---------------
 1 file changed, 12 insertions(+), 15 deletions(-)

diff --git a/mmengine/registry/registry.py b/mmengine/registry/registry.py
index 5e0dbd4f..b0b16cda 100644
--- a/mmengine/registry/registry.py
+++ b/mmengine/registry/registry.py
@@ -348,7 +348,6 @@ class Registry:
                     level=logging.WARNING)
                 try:
                     module = import_module(f'{self.scope}.utils')
-                    module.register_all_modules(False)  # type: ignore
                 except (ImportError, AttributeError, ModuleNotFoundError):
                     if self.scope in MODULE2PACKAGE:
                         print_log(
@@ -366,22 +365,20 @@ class Registry:
                             'have registered the module manually.',
                             logger='current',
                             level=logging.WARNING)
+                else:
+                    # The import errors triggered during the registration
+                    # may be more complex, here just throwing
+                    # the error to avoid causing more implicit registry errors
+                    # like `xxx`` not found in `yyy` registry.
+                    module.register_all_modules(False)  # type: ignore
 
             for loc in self._locations:
-                try:
-                    import_module(loc)
-                    print_log(
-                        f"Modules of {self.scope}'s {self.name} registry have "
-                        f'been automatically imported from {loc}',
-                        logger='current',
-                        level=logging.DEBUG)
-                except (ImportError, AttributeError, ModuleNotFoundError):
-                    print_log(
-                        f'Failed to import {loc}, please check the '
-                        f'location of the registry {self.name} is '
-                        'correct.',
-                        logger='current',
-                        level=logging.WARNING)
+                import_module(loc)
+                print_log(
+                    f"Modules of {self.scope}'s {self.name} registry have "
+                    f'been automatically imported from {loc}',
+                    logger='current',
+                    level=logging.DEBUG)
             self._imported = True
 
     def get(self, key: str) -> Optional[Type]:
-- 
GitLab