lizy169 发表于 2022-12-26 09:07

求Python的try/except优雅写法,或其它方式实现这功能

# 目的是当程序块1出现异常,就执行程序块2,当程序块2再出现异常就执行程序块3,当程序块3还出现异常,就执行程序块4
# 以下方式可满足这个目的,还有没有其它优雅的写法,或其他方式来实现这个
a = '1'
b = '2'
c = '3'
d = '4'
try:
    try:
      try:
            print(a + 1)# 程序块1
      except:
            print(b + 1)# 程序块2
    except:
      print(c + 1)# 程序块3
except:
    print(d + 1)# 程序块4

Helli 发表于 2022-12-26 09:23

你的except写的太宽泛了,基本在项目中起不到什么作用

hjlarry 发表于 2022-12-26 09:46

假设在一个函数里,就可以用return来解决嵌套的问题,例如
def test_func():
       try:
            return a+1
       except:
            pass
       try:
            return b+1
       ....

xzqsr 发表于 2022-12-26 09:51

def fun():
    # 1
    try:
      A1()
      return
    except:
      pass

    # 2
    try:
      A2()
      return
    except:
      pass

    # 3
    try:
      A3()
      return
    except:
      pass

apull 发表于 2022-12-26 10:30

不晓得这个方法可以不可以。


aa = "1234"
flag = False
for i in aa:
    try:
      print(i + 1)# 程序块1
      flag = True
    except:
      print("Error " + i)
      
    if flag:
      break

print("End")

cloud2010 发表于 2022-12-26 10:32

def f1():
    pass

def f2():
    pass

def f3():
    pass

def f4():
    pass

fs = (f1, f2, f3, f4)
for f in fs:
    try:
      f()
      break
    except:
      pass

甜萝 发表于 2022-12-26 10:45

a = '1'
b = '2'
c = '3'
d = '4'

try:
    print(a + 1)
except:
    try:
      print(b + 1)
    except:
      try:
            print(c + 1)
      except:
            print(d + 1)

whoami233 发表于 2022-12-26 13:46

Python 3.11 提供了一个异常组,ExceptionGroup

安卓iphone 发表于 2022-12-26 14:05

whydontknow 发表于 2022-12-26 09:25
为什么要加这么多try?非要加不可的话也建议except不要写这么宽泛

别人是求组你问为啥

lizy169 发表于 2022-12-26 14:40

paypojie 发表于 2022-12-26 10:45
a = '1'
b = '2'
c = '3'


这个思路更简洁易懂,谢谢了
页: [1] 2
查看完整版本: 求Python的try/except优雅写法,或其它方式实现这功能