print ("enter 2 numbers to divide ")
x = input ()
y = input ()
try :
div = int (x)/ int (y)
print ( x + ' / ' +y +' = ' +str(div))
mul = int (x)* int (y)
print ( x + ' * ' +y +' = ' +(str(mul)))
except ZeroDivisionError:
print ("2nd number can not be 0")
#except SyntaxError:
print ("try again inputs are wrong")
except ValueError:
print ("try again inputs are wrong Value error")
except:
print ("number can not be blank")
这是示例代码。我想了解一下,它是什么错误,如果指定了ValueError,则不会默认。为了对其进行测试,我排他地添加了SyntaxError,即使在发生系统错误(例如。/`)时也无法进行除法的情况下,并且在编译器中,语法错误仍然在值错误块下面。
再举一个例子,
>>> s/a
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
s/a
NameError: name 's' is not defined
此输入还将输出显示为“ Value Error”,而不是默认值。
甚至,
>>> `/`
SyntaxError: invalid syntax
在这种情况下,即使定义了语法错误,也会将输出带到“ valueerror”(如果已定义)或默认值,而不是进入代码的“ SyntaxError”错误块。
有人可以告诉我为什么吗?我检查了层次结构和一些示例网站,但我什么都没明白是什么原因造成的。
答案 0 :(得分:0)
在编译时发生语法错误,因为Python无法解析代码。您无法在运行时捕获它,因为代码甚至都不会执行。
也就是说,您的第一个代码中的任何内容都不会导致语法错误。我不确定为什么会这样。在输入中输入\
表示您正在有效地执行int("\")
,正如您所说的是ValueError。