如果用户尝试除以 10/'dog',我试图防止出现错误。即使在使用异常之后我仍然会收到错误
I am trying to prevent an error if the user tries to divide 10/'dog'. Even after using exception I still get error
Still getting Type and Value Error
def my_divider(a,b):
try:return a/b
except ZeroDivisionError:
return"Error: You cannot divide a number by 0"
except TypeError:
a=float(a)
b=float(b)
return a/b
except ValueError:
return"Please enter an integer"
var1=10
var2='dog'
print(my_divider(var1,var2))
首先,请将您的代码粘贴到问题中。
在你的例子中,TypeError 正在触发,但是你在调用 float('dog')
.
时导致了次要的 ValueError 异常
要解决此问题,您必须首先决定在这种情况下您希望发生什么。
您正在捕捉 TypeError
,这是正确的。如果你 return 从这个 except
块返回一些字符串,你的程序将 运行 没有任何问题并打印 returned 字符串。但是你通过将 dog
转换为 string
.
来筹集另一个 ValueError
请记住,所有这些 except
块都是一个 try
块。如果我在处理第一个异常时导致另一个异常,那么您尝试做的是好的,我将编写另一个 except 块,那将不起作用。您将不得不编写另一个 try-except
块。
我会附和@dkamins 在这里所说的话,但我需要代表所以我会在这里尝试一下。
您正在编写的代码看起来如此接近,当您看到它时,您会踢自己一脚。 try except 子句的大用处!您看起来已经像 python 专业人士了。是的,当您尝试在 isinstance(b,str)
时分配 b = float(b)
时会发生错误,但我认为,我看到您试图捕获该异常。但是由于它与 separate try-except 子句内联,因此它的行为与您所看到的一样。所以,像这样:
def my_divisor(a,b):
try:
return a/b
except ZeroDivisionError:
print("You cannot divide by the number 0")
return None
except TypeError:
try:
a = float(a)
b = float(b)
return a/b
except ValueError:
print('Error converting type of a, b to numeric. Just put in some numbers, pls')
return None
小心!!!我们没有在这里处理任何事情。 my_divisor(40,"0")
return 会是什么?我想你是从这里得到的朋友!
Still getting Type and Value Error
def my_divider(a,b):
try:return a/b
except ZeroDivisionError:
return"Error: You cannot divide a number by 0"
except TypeError:
a=float(a)
b=float(b)
return a/b
except ValueError:
return"Please enter an integer"
var1=10
var2='dog'
print(my_divider(var1,var2))
首先,请将您的代码粘贴到问题中。
在你的例子中,TypeError 正在触发,但是你在调用 float('dog')
.
要解决此问题,您必须首先决定在这种情况下您希望发生什么。
您正在捕捉 TypeError
,这是正确的。如果你 return 从这个 except
块返回一些字符串,你的程序将 运行 没有任何问题并打印 returned 字符串。但是你通过将 dog
转换为 string
.
ValueError
请记住,所有这些 except
块都是一个 try
块。如果我在处理第一个异常时导致另一个异常,那么您尝试做的是好的,我将编写另一个 except 块,那将不起作用。您将不得不编写另一个 try-except
块。
我会附和@dkamins 在这里所说的话,但我需要代表所以我会在这里尝试一下。
您正在编写的代码看起来如此接近,当您看到它时,您会踢自己一脚。 try except 子句的大用处!您看起来已经像 python 专业人士了。是的,当您尝试在 isinstance(b,str)
时分配 b = float(b)
时会发生错误,但我认为,我看到您试图捕获该异常。但是由于它与 separate try-except 子句内联,因此它的行为与您所看到的一样。所以,像这样:
def my_divisor(a,b):
try:
return a/b
except ZeroDivisionError:
print("You cannot divide by the number 0")
return None
except TypeError:
try:
a = float(a)
b = float(b)
return a/b
except ValueError:
print('Error converting type of a, b to numeric. Just put in some numbers, pls')
return None
小心!!!我们没有在这里处理任何事情。 my_divisor(40,"0")
return 会是什么?我想你是从这里得到的朋友!