如何组织代码,使重复try except子句只存在一次?

2024-05-15 01:42:02 发布

您现在位置:Python中文网/ 问答频道 /正文

try语句中的代码将有所不同,但try except语句本身总是相同的。我怎样才能减少这种冗余呢?在

def cloudflare_add_zone(ctx, url, jumpstart, organization):
    try:

        if organization:
            ctx.create_zone(url, jumpstart, organization)
        else:
            ctx.create_zone(url, jumpstart)
        click.echo('Zone successfully created: %s' % url)

    except HTTPServiceError, e:
        code = str(e.details['errors'][0]['code'])
        message = e.details['errors'][0]['message']
        click.echo(code + ":" + message)

def cloudflare_add_record(ctx, domain, name, type, content, ttl):
    try:

        payload = {
            'type': type,
            'name': name,
            'content': content
        }
        if ttl:
            payload['ttl'] = ttl
        zone_id = ctx.get_zone_by_name(domain).get('id')
        ctx.create_dns_record(zone_id, payload)

    except HTTPServiceError, e:
        code = str(e.details['errors'][0]['code'])
        message = e.details['errors'][0]['message']
        click.echo(code + ":" + message)

Tags: nameurlzonemessagecreatecodedetailsclick
1条回答
网友
1楼 · 发布于 2024-05-15 01:42:02

你可以写一个装饰师:

from functools import wraps

def http_safe(func):
    @wraps(func)
    def wrapper(*args, **kwargs):
        try:
            return func(*args, **kwargs)
        except HTTPServiceError, e:
            click.echo('{[code]}: {[message]}'.format(e.details['errors'][0]))
   return wrapper

然后使用它:

^{pr2}$

相关问题 更多 >

    热门问题