【问题标题】:Handling similar exceptions for multiple variables处理多个变量的类似异常
【发布时间】:2021-05-17 07:45:49
【问题描述】:

我如何处理异常,以便为具有两个不同变量的同一异常获得单独的注释。

    try:
        global a
        a = int(num)
    except ValueError:
        print(num, "is not a number. Please try again...")
    try:
        global b
        b= int(denom)
        return (Fraction(a, b))
    except ValueError:
        print(denom, "is not a number. Please try again...")

如何在同一个 try 块中添加两个变量,但有两个不同的异常块,因为我有两个打印语句。上面代码的问题是,如果我为变量“a”输入一个字符串而不是数字,系统会打印该语句但也会抛出以下错误:

NameError: 名称“a”未定义

另外,我在哪里添加返回函数?

【问题讨论】:

  • 如果int(num) 引发异常,你想做什么?您肯定不想简单地记录错误并继续尝试使用a 作为Fraction 的参数吗?作为一般规则,使try 块中的代码尽可能小。如果它不能引发您期望处理的异常,请将其移到 try 块之外。
  • 这有点启发式,但是:import re; print(re.search("10: '(.*)'$",str(e)).group(1), "is not a number. Please try again...")
  • 好吧,假设我输入“hello”作为分子,输入9作为分母,所以它应该抛出异常并退出代码,但是在抛出异常后它会抛出上述错误。
  • try: global aa = int(num) b = int(denom) return (Fraction(a, b)) except ValueError: print(num, "is not a number. Please try again.. .") except ValueError: print(denom, "is not a number. Please try again...") 所以如果分子是“你好”并且分母是 6,上面的代码可以正常工作,但是如果我交换它们就行不通了并告诉我 6 不是数字,这里需要更改。
  • 所以我从用户那里获取两个数字(分子和分母),如果分子不是数字,我想打印“插入的分子不是数字”或打印“插入的分母不是数字” number" 如果分母不是数字,但两者都是值错误,所以我不能有单独的块。此外,只有当两者都是有效数字时,我才能调用分数函数,所以如果其中一个是错误的,我不知道如何调用它

标签: python python-3.x exception valueerror try-except


【解决方案1】:

这将帮助您处理您的异常

def Fraction(a,b):
    try:
        assert type(a) ==int, "is not a number. Please try again..."
        assert type(b)==int, "is not a number. Please try again..."
        .........
    except AssertionError as msg:
            print(msg)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-30
    • 1970-01-01
    相关资源
    最近更新 更多