Есть ли способ отменить инициализацию класса объекта, если в Python возникает ошибка?Python

Программы на Python
Anonymous
Есть ли способ отменить инициализацию класса объекта, если в Python возникает ошибка?

Сообщение Anonymous »

Код: Выделить всё

class EntityRetrieval(object):

def __init__(self,
entity_kb_path: str):

"""
Args
entity_kb_path: path of entity knowledge base (string) which is json format
"""

try:
entity_kb = json.load(open(entity_kb_path,'r'))
except Exception as e:
logging.error(e)

# Don't use entity type
entity_dict = {}

for entity_type, entities in entity_kb.items():
for entity_id, list_entity_strings in entities.items():
entity_dict[entity_id] = list_entity_strings

Выше мой уродливый код. Вот что меня беспокоит:
  • Действительно ли необходимо перехватывать ошибки, чтобы предотвратить сбой? В приведенном выше коде объектent_kb_path должен быть файлом json. Возможно, произошла ошибка неправильного формата файла или ошибка «не найден файл». И я пытаюсь выдать сообщение об ошибке пользователю, когда он не передает правильный аргумент, вместо того, чтобы выдать сбой.
  • Но когда я использую try catch, инициализация все еще выполняется и возвращает экземпляр, я думаю это нелогично, я имею в виду, что инициализация должна прекратиться, верно?
  • Если попытаться, кроме помещает туда, то произойдет что-то странное, что переменнаяentity_kb может быть не объявлена. Но код блока процесса, стоящий за этим, слишком длинный. Возможно, я не захочу помещать его в блок try
Так как же поступить в таких сценариях?

Подробнее здесь: https://stackoverflow.com/questions/783 ... r-occurs-i

Вернуться в «Python»