Python 从抛出异常的地方继续

标签 python exception try-catch continue

嗨,有没有办法从抛出异常的地方继续? 例如我有以下伪代码

unique code 1
unique code 2
unique code 3

如果我想忽略任何唯一代码语句的异常,我必须这样做:

try:
  #unique code 1
except:
  pass

try:
  #unique code 2
except:
  pass

try:
  #unique code 3
except:
  pass

但这对我来说并不优雅,而且我一生都不记得上次是如何解决此类问题的......我想要的是类似的东西

try:
  unique code 1
  unique code 2
  unique code 3
except:
  continue from last exception raised

更新: 原因:我问这个问题的原因是上面 3 行代码共享相同类型的异常,比如说,从数组中提取信息,在这个特定的场景中,我并不真正关心 value not in 的异常数组。

最佳答案

将每个代码部分包装到一个函数中,然后尝试在 for 循环中调用每个代码部分:

def code1():
    #unique code 1

def code2():
    #unique code 2

def code3():
    #unique code 3

for section in [code1, code2, code3]:
    try:
        section()
    except:
        pass

编辑:如果您仍在寻找另一种方法,您可以使用装饰器使每个调用“安全”,购买返回任何错误而不是抛出错误。不确定这是否真的是 Pythonic 或者是一种很好的做事方式,但它是一种方式:

def safe_call(fn):
    def wrapper(*args, **kwargs):
        try:
            return fn(*args, **kwargs)
        except Exception as error:
            return error
    return wrapper

@safe_call
def code1():
    #unique code 1

@safe_call
def code2():
    #unique code 2

@safe_call
def code3():
    #unique code 3

code1()
code2()
code3()

关于Python 从抛出异常的地方继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11218898/

相关文章:

java - 在Catch异常之前打印出Finally

c# - 如何让try/catch在出错后继续工作?

python - 使用自定义键在 python 中排序元组

python - 提高 KeyError(key) KeyError : 'SECRET_KEY' with django on production settings

python - pip在windows中安装密码学

python virtualenv - 缺少一些 python 核心库

c++ - 更新/初始化函数或构造函数(构造时数据不可用)

php - twilio 捕获错误不起作用

python:测试子进程调用是否抛出预期异常

asp.net - 并发用户的 Asp.Net 中出现异常会发生什么