【问题标题】:Python: How to simplify multiple statements with the same try/except blockPython:如何使用相同的 try/except 块简化多个语句
【发布时间】:2020-11-26 15:10:35
【问题描述】:

我有一个这样的代码块:

try:
    gitlab.gl_delete_project(gitlab_project_id)
except DevOpsError as e:
    if e.status_code != 404:
            raise e
try:
    redmine.rm_delete_project(redmine_project_id)
except DevOpsError as e:
    if e.status_code != 404:
        raise e
try:
    if harbor_project_id is not None:
        harbor.hb_delete_project(harbor_project_id)
except DevOpsError as e:
    if e.status_code != 404:
        raise e

每个方法都可能引发DevOpsError,在某些情况下,我只想忽略异常,或者在其他时候重新引发。

既然try/except块都是一样的,有没有办法简化代码?

编辑:我被建议一个类似的问题,但它没有告诉我如何将参数传递给方法。

【问题讨论】:

标签: python


【解决方案1】:

定义函数并根据需要多次调用它:

def try_to_delete(delete_method, object):
    try:
        delete_method(object)
    except DevOpsError as e:
        if e.status_code != 404:
            raise e

try_to_delete(gitlab.gl_delete_project, gitlab_project_id)
try_to_delete(redmine.rm_delete_project, redmine_project_id)
if harbor_project_id is not None:  
    try_to_delete(harbor.hb_delete_project, harbor_project_id)

【讨论】:

  • 谢谢,不知道Python有高阶函数用法。这是完美的。
  • 欢迎您!这不是高阶函数。对函数的引用的传递方式与在 C 或 C++ 中传递的方式相同。
猜你喜欢
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多