如果引发异常,请再次输入

Sc4r

我想做的是问用户两个输入,然后它在输入上调用一个函数,但是如果它的结果​​引发异常,则要再次询问用户输入。

这是我到目前为止的内容:

class Illegal(Exception):
    pass

def add_input(first_input, second_input):
    if first_input + second_input >= 10:
        print('legal')
    else:
        raise Illegal

first_input = input("First number: ")
second_input = input("Second number: ")
while add_input(int(first_input), int(second_input)) == Illegal:
    print("illegal, let's try that again")
    first_input = input("First number: ")
    second_input = input("Second number: ")

但是到目前为止,我所遇到的问题是,由于它从函数中引发了该错误,因此它停止了所有操作,并且不再要求用户再次输入。我想知道如何解决此问题。

赫斯特

您无需通过将相等性与异常类进行比较来检查异常。你用try..except块代替

while True:              # keep looping until `break` statement is reached
    first_input = input("First number: ")
    second_input = input("Second number: ")   # <-- only one input line
    try:                 # get ready to catch exceptions inside here
        add_input(int(first_input), int(second_input))
    except Illegal:      # <-- exception. handle it. loops because of while True
        print("illegal, let's try that again")
    else:                # <-- no exception. break
        break

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果为空,请再次要求输入提示()?

如果输入无效,是否可能引发异常?

如果不正确,请再次提示直到正确

启动视频,如果视频已关闭,请再次启动

如果输入不是bigDecimal,如何抛出异常并再次扫描?

如果try块不包含显式引发异常的代码,是否有理由仅捕捉异常以再次引发异常?

i如果数字不是数字,请再次显示该信息。在JS中

如果输入是,则使脚本再次运行

如果存在Optional <>,则引发异常

如果脚本失败,则引发异常

如果输入错误,再次要求输入

如果未输入getline分隔符,是否建议引发异常的方法?

如果抽象类属性名称输入错误,如何引发异常

如果语句变为假,则再次调用输入

如果用户输入无效,如何再次提示?

在catch块中引发异常-是否会再次捕获?

再次调用async_read会引发异常

如果方法参数无效,则引发异常

如果语句将引发异常,则停止的断点

服务验证:如果验证失败,则引发异常

如果finally块引发异常会怎样?

如果对象为null则引发异常

如果传入无效值,则引发异常

验证-如果输入错误,再次提示用户输入

禁用按钮,直到按下另一个按钮为止;如果单元格值发生更改,请再次禁用它

Python 异常:如果引发特定异常,则执行代码,否则执行

如何在Task.WhenAll上取消和引发异常(如果引发任何异常)?

如果包含 orderBy,Firestore 查询会引发异常

如果WHERE获得空结果,将引发UPDATE查询的异常