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

Python 如何处理在包或函数调用的低级别引发的异常?,python,exception,Python,Exception,例如,我的函数调用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 ValueEr

例如,我的函数调用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\u helper”和“parse”中的块外,还允许使用try…调用“parse”时除外


处理这件事的通常做法是什么?如果除了下面所示的3层函数调用之外,还嵌入了其他几层函数调用,那么我是否必须使用try。。。除了每一层函数中的block之外,为了将异常处理传递给最高层的最终用户?

传递一个参数以决定是否提出异常或对异常保持沉默的做法是存在的,例如

你可以

def parse(self, text, error_silent=False):

     ...
    try:
        return self.parse_helper(text)
    except ValueError as e:
        if error_silent:
            return None
        raise e

是的,您通常会捕获异常并将其传播到应该处理它们的任何级别。为此,您需要添加try。。。除了解析器_helper()之外。对吗?因此,如果上升误差源于非常低的水平,您需要尝试。。。除了一直到最后一个公共接口的块,即“parse”。对吗?@marlon Nope,错误将传播到父函数,直到:出现except或thr程序崩溃