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 - "))
您尝试将一个字符转换为整数。
为什么当我传递一个字符时 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 - "))
您尝试将一个字符转换为整数。