我正在设计一个解析文件的错误返回系统。我有主要功能
headerDict, paramDict, modelDict,error = parse(fPath)
取一个文件路径,然后调用parse(),它返回三个字典和一个错误(0表示每个ok,不同错误类型的数字,错误在子函数中定义)。 parse是一个函数,它调用几个返回错误的子函数:
def parse(fPath):
content, error = read_file(fPath)
header, body, error = prepare_file(content)
headerDict, error = make_headerDict(header)
paramDict, modelDict, error = make_bodyDicts(body)
return headerDict, paramDict, modelDict, error
现在我想检查每个子函数调用后如果错误仍为零,如果是,则继续使用下一个子函数,如果没有跳转到带有错误值的main函数,它将被处理。我显然可以插入
if not error:
pass
else:
headerDict = {}
paramDict = {}
modelDict = {}
return headerDict, paramDict, modelDict, error
在parse()函数中的每个子函数调用之后,但是没有更优雅的方法来做到这一点?我想写一个包含上面代码的error_check函数,但后来我不知道如何直接返回main函数而不是parse函数。
请记住,我不想在程序中引发异常等并导致它停止和退出,我希望程序运行到结束(例如main)然后返回错误值。 (并且对不好的标题感到抱歉,不知道如何表达我的问题...;))
感谢您的帮助!
答案 0 :(得分:1)
这是例外情况。定义一个自定义异常 - 它可以只是一个从基类Exception类继承的空类 - 并且每个子函数都可以在需要时引发该错误。然后,您的main函数可以将所有内容包装在try / except块中 - 确保只捕获您的自定义异常 - 这样如果它们中的任何一个引发,执行将直接跳到except子句。