我开始学习Python,我写了一个非常简单的代码来练习try / except。
代码如下:
a = float(input('num1: '))
b = float(input('num2: '))
try:
result = a / b
except ValueError as e:
print ('error type: ', type (e))
print(result)
每当我输入一个字母作为数字时,除了中的打印内容就可以使用,但是代码崩溃。
ZeroDivisionError
和TypeError
正常运行,但ValueError
无效。
我什至将输入放在单独的try / except中,但仍然无法正常工作。
我该如何在实际应用中处理此错误?
答案 0 :(得分:1)
在进入try块之前发生崩溃。如果您输入带有当前代码的字母,它将不会在except块中打印错误。
仅将输入节放在单独的try块中是无法捕获的-您需要与try相关的except块,其中发生错误,例如
try:
a = float(input('num1: '))
b = float(input('num2: '))
except ValueError as e:
print ('Value Error')
try:
result = a / b
except ZeroDivisionError as e:
print ('Zero DivisionError')
print(result)
或者,您可以将所有输入和除法都放在try块中,并捕获当前的报告:
try:
a = float(input('num1: '))
b = float(input('num2: '))
result = a / b
except ValueError as e:
print ('error type: ', type (e))
print(result)
编辑:请注意,如果其中任何一个确实发生任何错误,则稍后将导致更多错误。最好选择第二个选项,但将print(结果)移到try块中。这是唯一要定义的时间。