【发布时间】: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