如果Python出现错误,有什么方法可以取消初始化对象类吗?

问题描述 投票:0回答:1
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

上面是我丑陋的代码。我关心的是:

  • 它真的需要捕获错误来防止崩溃吗?在上面的代码中,
    entity_kb_path
    必须是json文件。可能存在格式不正确的文件错误、未找到文件错误。当用户没有传递正确的争论时,我尝试向用户抛出消息错误,而不是抛出崩溃。
  • 但是当我使用 try catch 时,初始化仍在运行并返回一个实例,我认为这不合逻辑,我的意思是它应该停止初始化,对吗?
  • 如果 try except 放在那里,那么可能会出现一些奇怪的情况,即
    entity_kb
    变量可能没有被声明。但其背后的流程块代码太长了。我可能不想把它放在
    try

那么在这些情况下你会怎么做?

python class
1个回答
0
投票

您可以在生成日志输出后使用非零状态代码使异常处理程序退出程序:

import sys

try:        
    entity_kb = json.load(open(entity_kb_path,'r'))
except Exception as e:
    logging.error(e)
    sys.exit(1)
© www.soinside.com 2019 - 2024. All rights reserved.