Python异常处理ValueError

Python exception handling ValueError

为什么当我传递一个字符时 except ValueError as ve 块没有被执行?

class Division :
    def divide(numerator, denominator):
        try:
            print(f"Result  : {(numerator/denominator)}")
        except ValueError as ve:
            print("Invalid input given",ve)
        except Exception as e :
            print(f"Exception caught : {e} ")

    if __name__ == "__main__" :
        a = int(input("Enter the numerator - "))
        b = int(input("Enter the denominator - "))
        divide(a,b)

O/P:

Enter the numerator - A
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 10, in Division
ValueError: invalid literal for int() with base 10: 'A'

相反,我想看到 print("Invalid input given",ve) 被处决。

如果您查看错误中的跟踪信息,您的 divide 函数不会抛出异常。如果您使用下面的代码在不转换的情况下收集用户输入,则可以避免在 divide 函数之外抛出此异常。

if __name__ == "__main__" :
    a = input("Enter the numerator - ")
    b = input("Enter the denominator - ")
    divide(a,b)

正如 Karl 在评论中指出的那样,您需要在除法函数中将值转换为 int,而不是在那里生成 ValueError。否则,它会抛出 TypeError。

因为是这一行产生了错误:

a = int(input("Enter the numerator - "))

您尝试将一个字符转换为整数。