麻烦大佬帮忙看下以下代码中为何except无法正常捕捉错误

GeofferyLibrom 2020-12-28 02:53:46
从结果来看,except的代码根本没有执行。按理说except没有指定参数的话应该可以捕捉所有类型的异常才对。
请问是那里出错了?
def getInput():
try:
txt = input("请输入整数: ") #
while isinstance(txt,int):
txt = input() # "请输入整数: "
except:
print("输入的不是整数")
return getInput()
return eval(txt)
print(getInput())

请输入整数: 饿
Traceback (most recent call last):
File "/Users/librom/PycharmProjects/dream/ST2.py", line 10, in <module>
print(getInput())
File "/Users/librom/PycharmProjects/dream/ST2.py", line 9, in getInput
return eval(txt)
File "<string>", line 1, in <module>
NameError: name '饿' is not defined
...全文
51 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈年椰子 2020-12-28
  • 打赏
  • 举报
回复
return eval(txt) 不在 try except 体里。
DuskCrow_ 2020-12-28
  • 打赏
  • 举报
回复
首先 input()返回的是个字符串,所以 while isinstance(txt,int) 总是不成立的。 那么程序就直接执行return eval(txt),那就相当于在解释器中执行‘饿’,而‘饿’这个变量从来就没有定义过。 另外,在try语句块中没有错误被触发,所以except没有捕获。 要判断是不是整数不如直接在try中 int(txt),如果输入的不是整数字符就会引发ValueError错误,会被except捕获。 你试试看。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧