如何处理在包或函数调用的低级别引发的异常



例如,我的函数调用make如下所示:

def parse(self, text):
...
return self.parse_helper(text)
@staticmethod
def parser_helper(text):
...
return normalize(text)
@staticmethod
def normalize(text):
...
try:
...
except:
raise ValueError('normalize failed.')

如果"parse"是提供给用户调用的函数,如果normalize((中发生异常,则整个程序将终止。为了避免这种情况,让用户决定发生异常时该怎么办,我必须并尝试。。。将块同时放入"parser_helper"one_answers"parse"中,并让use使用try。。。调用"parse"时除外?

处理这个问题的常规做法是什么?如果除了下面所示的3之外,还嵌入了几层函数调用,我是否必须使用try。。。除了每一层功能中的块之外,为了将异常的处理转移到最顶层的最终用户?

传递参数以决定是引发异常还是对异常保持沉默的做法是存在的,例如在os.makedirs

你可以做

def parse(self, text, error_silent=False):
...
try:
return self.parse_helper(text)
except ValueError as e:
if error_silent:
return None
raise e

最新更新