无法在Python中捕获ValueError

发布于 2021-01-29 15:01:45

我开始学习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)

每当我输入字母作为数字时,除了的打印效果良好,但代码崩溃。

ZeroDivisionErrorTypeError正在工作,但ValueError没有。

我什至将输入放在单独的try / except中,但仍然无法正常工作。

我该如何在实际应用中处理此错误?

关注者
0
被浏览
66
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在您进入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块中。这是唯一要定义的时间。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看