Python:如何使用同一个 try/except block 简化多个语句

标签 python

我有这样一个代码块:

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 block 都是相同的,有没有办法简化代码?

编辑:有人向我提出了类似的问题,但它没有告诉我如何将参数传递给方法。

最佳答案

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

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:如何使用同一个 try/except block 简化多个语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65016810/

相关文章:

python - 我可以将 SIGINT 发送到 Windows 上的 Python 子进程吗?

python - 服务器日志和我的客户端之间的 SOAP 调用执行时间测量差异

python - Python 中的多元线性回归 - MATLAB 中 mvregress 的模拟?

python - 属性错误 : module 'numpy.core' has no attribute 'numerictypes'

python - 在服务器端获取 Facebook 内容

python - Django csrf_token 未实现隐藏字段

python - 为什么 find_all 会报错,即使 just find 没有报错? ( python 美汤)

Python 请求 : Handling JSON response, 存储到列表或字典?

Python变量命名/绑定(bind)混淆

python - 为什么alembic不能自动生成?