Can';在Python中捕获ValueError
我开始学习Python,我编写了一个非常简单的代码来练习try/except 代码如下:Can';在Python中捕获ValueError,python,valueerror,try-except,Python,Valueerror,Try Except,我开始学习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) 每当我输入一个字母作为数字时,在except中的打印都会工作,但代码会崩溃 ZeroDiv
a = float(input('num1: '))
b = float(input('num2: '))
try:
result = a / b
except ValueError as e:
print ('error type: ', type (e))
print(result)
每当我输入一个字母作为数字时,在except中的打印都会工作,但代码会崩溃
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)
编辑:请注意,如果其中任何一个出现错误,它将在以后导致进一步的错误。最好使用第二个选项,但将打印(结果)移动到try块中。这是唯一一次定义它。请显示stacktrace。
打印(结果)
将在发生异常时崩溃,因为结果
将永远不会被定义。我尝试了第一个选项,但它不起作用-这让我吃惊!我将测试第二个解决方案。谢谢约翰·杜兰,我真的很想谢谢你!用第二种方法解决问题。