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文件。可能存在格式不正确的文件错误、未找到文件错误。当用户没有传递正确的争论时,我尝试向用户抛出消息错误,而不是抛出崩溃。entity_kb
变量可能没有被声明。但其背后的流程块代码太长了。我可能不想把它放在try
块那么在这些情况下你会怎么做?
您可以在生成日志输出后使用非零状态代码使异常处理程序退出程序:
import sys
try:
entity_kb = json.load(open(entity_kb_path,'r'))
except Exception as e:
logging.error(e)
sys.exit(1)