Python 如何捕获异常后继续运行?

try:
    1/0
    print(1)
except ZeroDivisionError:
    pass

如上,我想要触发ZeroDivisionError后print(1)也能继续运行。
写两个try不现实,万一我后面有100个print怎么办?写100个try太蠢了。

就是说有好几个语句是互相独立的,他们都有可能触发比如说ZeroDivisionError异常,那么触发了我不希望异常语句后的语句停止运行,而是继续运行,应该怎么写?

try:
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
    1/0
    print(1)
except ZeroDivisionError:
    pass

比如说上面这段,我想要他忽略掉所有的1/0而把所有的print(1)都给打印出来

就是怎么在多行代码运行时,每一行的功能不一样,但是互相独立,上下不关联,其中某一行异常了,忽略这个异常,然后后面没运行的行继续运行?

什么循环的,exec,eval的写法都是蠢写法,有没有什么巧妙的实现方式,谢谢

阅读 6.5k
3 个回答

你可以把这些一样的除法提取出来,写成一个函数,然后复用函数,每次计算传入不同参数。
类似以下:

def division(x,y):
    try:
        z = x/y
        print(z)
    except ZeroDivisionError:
        pass
division(1,0)
division(2,0)
division(3,0)

try应该放在可能出错的语句之前,并且在其中的语句要尽量少,print(1)是不可能出错的,应该放在try..except之外。

try:
    1/0
except:
    pass
print(1)
...
try:
    xxx
except:
    pass
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题