multiple try: except: functions 和组合它们有什么区别?

What is the difference between multiple try: except: functions and combining them?

我有两个代码,但它们给出了不同的答案,谁能告诉我其中的区别?

这是第一个:

number_in_red=[]
for i in range(1, sheet.max_row +1):
    try:
        if 95<=int(sheet.cell(row=i,column=3).value[1:4])<=289:
            number_in_red.append(i)
    except ValueError:
        try:
            if 289>=int(sheet.cell(row=i,column=3).value[2:5])>=95:
                number_in_red.append(i)
        except ValueError:
            try:
                if 95<=int(sheet.cell(row=i,column=3).value[1:3]):
                    number_in_red.append(i)
            except ValueError:
                try:
                    if int(sheet.cell(row=i,column=3).value[2:4])>=95:
                        number_in_red.append(i)
                except ValueError:
                    pass

第二个有何不同?

number_in_red=[]
for i in range(1, sheet.max_row +1):
    try:
        if 95<=int(sheet.cell(row=i,column=3).value[1:4])<=289 or 289>=int(sheet.cell(row=i,column=3).value[2:5])>=95:
            number_in_red.append(i)
    except ValueError:
        try:
            if 95<=int(sheet.cell(row=i,column=3).value[1:3]) or int(sheet.cell(row=i,column=3).value[2:4])>=95:
                number_in_red.append(i)
        except ValueError:
            pass

在第一个代码片段中,如果 value[1:4] 出现问题并抛出异常(例如,它是一个会导致 int() 引发异常的字符),代码将继续并尝试评估 value[2:5] 与第二个片段 "jump" 以评估 value[1:3]