无法在 Python 中捕获 ValueError
Can't catch ValueError in Python
开始学习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 但它仍然无法正常工作。
如何在此处以及在实际应用中处理此错误?
崩溃发生在您进入 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(result) 移动到 try 块中。这是唯一一次定义它。
开始学习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 但它仍然无法正常工作。
如何在此处以及在实际应用中处理此错误?
崩溃发生在您进入 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(result) 移动到 try 块中。这是唯一一次定义它。