我应该在哪里放置try / except?

Gia*_*nou 3 python exception pandas

为了改善我的编码,我想知道应该将try / except放在函数内部还是将其放在外部。以下示例显示了我的意思。

    import pandas as pd

    df = pd.read_csv("data.csv")

    # Example 1
    def do_something(df):
        # Add some columns
        # Split columns
        return df

    try:
        df = do_something(df)
    except Exception, e:
        print e

    # Example 2
    def do_something(df):
        try:
            # Add some columns
            # Split columns
        except Exception, e:
            print e
            df = pd.DataFrame()
        return df

    df = do_something(df)
Run Code Online (Sandbox Code Playgroud)

看起来似乎相同,但是第一个示例更清楚地说明了发生的情况,而第二个示例似乎更清晰。

bak*_*kal 5

内部处理的可能性

如果该功能可以从异常中提供合理的恢复并在职责范围内进行处理,而无需任何其他信息,那么您可以在那里捕获异常

提出或翻译给来电者

否则,最好由调用者处理。有时即使在这种情况下,该函数也可能会捕获异常,然后立即通过对调用者有意义的翻译再次引发该异常