@Yrets169

Как правильно обернуть в try except?

Добрый вечер, как правильно заключить код в блок try except для корректной работы?
Фрагмент кода который открывает раздел в реестре и добавляет его содержимое в список list_keys_reg.
Except в данном случае срабатывает независимо есть такой раздел в реестре или нету.
Как правильно отловить ошибку?

import winreg
list_keys_reg = []
try:
   access_registry = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
   access_key = winreg.OpenKey(access_registry, r"Software\\JavaSoft\\Prefs\\jetbrains")
   i = 0
   while True:
      x = winreg.EnumKey(access_key, i)
      list_keys_reg.append(x)
      i += 1
except:
     print("не удается найти раздел")
  • Вопрос задан
  • 162 просмотра
Решения вопроса 1
@Yrets169 Автор вопроса
немного модифицировал код mikeyuriev, добавив условие
if 'access_key' in locals(): будет самым оптимальным вариантом
import winreg

try:
    access_registry = winreg.ConnectRegistry(None, winreg.HKEY_CURRENT_USER)
    access_key = winreg.OpenKey(access_registry, r"Software\\JavaSoft\\Prefs\\jetbrains")
except OSError:
    print("не удается найти раздел")

if 'access_key' in locals():
    list_keys_reg = []
    i = 0
    while True:
        try:
            x = winreg.EnumKey(access_key, i)
            list_keys_reg.append(x)
            print(list_keys_reg)
            i += 1
        except OSError:
            break
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы