可能引发两种类型的错误?
Possible to raise two types of errors?
所以我正在尝试制作自己的程序。我让用户输入一个字符串和一个整数(姓名,年龄)。
我想在年龄小于 1 岁时引发值错误(如果年龄 > 1:) 我做到了。但如果名称不是字符串,我不确定该怎么办。它是一个 TypeError 并且可以同时引发两种类型的错误吗?如果有怎么办?
可能用错了一些术语,但现在无法思考。
代码如下:
# This program asks name how old you are and makes exceptions to check and see if
there are errors
def hogwarts_express (name, age):
if age < 1:
raise ValueError ("Error: Apparently you don't exist. Please pick a number older
than 0!")
if int (age) >= 10:
print ("Hello {}! Welcome to the Hogwarts Express, your old enough to go now.
Here 's your ticket!".format(name))
else:
print ("Sorry {} you're not old enough to board the express.".format(name))
try:
your_name = input("What's your name? ")
age = int(input("How old might you be? "))
together = hogwarts_express (your_name, age)
except ValueError as err:
print ("That's not a valid value. Please input something else.")
print ("{}".format(err))
else:
print (together)
确实没有必要同时引发两个异常。可以提出您检测到的第一个错误。是的,如果您需要一个字符串但得到了其他东西,则 TypeError
是合适的。您可以检查并在 ValueError
之前或之后加注 TypeError
。您可以通过添加更多 except
子句在同一 try
语句中捕获多个异常类型。
另一种选择是使用 assert
语句来验证所有参数。断言表明违规是程序中的错误,您不想使用 try
语句来恢复。
我应该提一下,可以在 Python 中 链 异常(使用 raise ... from ...
语法),但这在从一个异常转换时使用type to another or for when one exception causes another,这似乎不适用于这种情况。
不要试图一次抛出所有异常,那是毫无意义的,除了适当地混淆用户之外没有任何其他目的。为每个发现的错误抛出一个特定的异常,或者抛出一个包含所有发现的错误的消息的一般异常。
所以我正在尝试制作自己的程序。我让用户输入一个字符串和一个整数(姓名,年龄)。
我想在年龄小于 1 岁时引发值错误(如果年龄 > 1:) 我做到了。但如果名称不是字符串,我不确定该怎么办。它是一个 TypeError 并且可以同时引发两种类型的错误吗?如果有怎么办?
可能用错了一些术语,但现在无法思考。
代码如下:
# This program asks name how old you are and makes exceptions to check and see if
there are errors
def hogwarts_express (name, age):
if age < 1:
raise ValueError ("Error: Apparently you don't exist. Please pick a number older
than 0!")
if int (age) >= 10:
print ("Hello {}! Welcome to the Hogwarts Express, your old enough to go now.
Here 's your ticket!".format(name))
else:
print ("Sorry {} you're not old enough to board the express.".format(name))
try:
your_name = input("What's your name? ")
age = int(input("How old might you be? "))
together = hogwarts_express (your_name, age)
except ValueError as err:
print ("That's not a valid value. Please input something else.")
print ("{}".format(err))
else:
print (together)
确实没有必要同时引发两个异常。可以提出您检测到的第一个错误。是的,如果您需要一个字符串但得到了其他东西,则 TypeError
是合适的。您可以检查并在 ValueError
之前或之后加注 TypeError
。您可以通过添加更多 except
子句在同一 try
语句中捕获多个异常类型。
另一种选择是使用 assert
语句来验证所有参数。断言表明违规是程序中的错误,您不想使用 try
语句来恢复。
我应该提一下,可以在 Python 中 链 异常(使用 raise ... from ...
语法),但这在从一个异常转换时使用type to another or for when one exception causes another,这似乎不适用于这种情况。
不要试图一次抛出所有异常,那是毫无意义的,除了适当地混淆用户之外没有任何其他目的。为每个发现的错误抛出一个特定的异常,或者抛出一个包含所有发现的错误的消息的一般异常。