异常处理,语法错误与值错误与默认实例

时间:2019-07-09 10:30:24

标签: python python-3.x

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”错误块。

有人可以告诉我为什么吗?我检查了层次结构和一些示例网站,但我什么都没明白是什么原因造成的。

1 个答案:

答案 0 :(得分:0)

在编译时发生语法错误,因为Python无法解析代码。您无法在运行时捕获它,因为代码甚至都不会执行。

也就是说,您的第一个代码中的任何内容都不会导致语法错误。我不确定为什么会这样。在输入中输入\表示您正在有效地执行int("\"),正如您所说的是ValueError。