处理多个 Try/Except 语句

Handling multiple Try/Except statements

我正在使用多个 try/except 块将数据帧(比如数据)的值分配给 3 个变量(比如 b、c、d) 我想处理 IndexErrors 如果位置索引器超出范围。我目前正在做的事情如下所示:

b,c,d=None,None,None
try:
    b=data.iloc[1,1]
except:
    pass
try:
    c=data.iloc[2,1]
except:
    pass
try:
    d=data.iloc[0,2]
except:
    pass

我想知道是否有更好的方法,比如函数 try_except() 或其他方法,以便我可以如下所示使用它:

try_except(b=data.iloc[1,1])
try_except(c=data.iloc[2,1])
try_except(d=data.iloc[0,2])

您可以只编写一个执行查找并捕获异常的函数,但顺便说一句,except: pass 可能不是一个好主意。您应该更具体地处理错误。

def safe_get(container, i, j):
    try:
        return container[i,j]
    except IndexError: # or whatever specific error you're dealing with
        return None

b = safe_get(data.iloc, 1, 1)
c = safe_get(data.iloc, 2, 1)
d = safe_get(data.iloc, 0, 2)