【问题标题】:Raising errors: Ugly code... Better way to write?引发错误:丑陋的代码......更好的编写方式?
【发布时间】:2023-04-01 21:45:01
【问题描述】:
def positive_int(value):
    try:
        ivalue = int(value)
    except:
        raise argparse.ArgumentTypeError("%s is an invalid positive int value" % value)
    if ivalue <= 0:
        raise argparse.ArgumentTypeError("%s is an invalid positive int value" % value)
    return ivalue

只要认为上面的代码丑陋至极。第一部分是引发错误,另一部分是检查值是否可满足。如果其中至少一个失败,则应引发错误。有没有办法将这些串起来检查,这样我就不需要重复行了?或者只是一个更好、更漂亮的替代品?非常感谢:)

【问题讨论】:

  • 您可以将except 块中的代码更改为ivalue = -1,这样您只需编写一次错误文本¯\_(ツ)_/¯

标签: python code-readability


【解决方案1】:

如果 try: 块内的值为负数,这将引发通用异常,导致它重新引发与 int(value) 引发异常时相同的异常

def positive_int(value):
    try:
        ivalue = int(value)
        if ivalue <= 0:
            raise Exception
    except:
        raise argparse.ArgumentTypeError("%s is an invalid positive int value" % value)

    return ivalue

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 2013-04-07
    • 2011-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多