除了块经过try块和程序的其余部分之后总是被抛出?

时间:2014-07-14 22:29:01

标签: python python-3.x error-handling try-catch

我检查是否可以将输入更改为整数,如果它不能从UI()的开头重新开始。我通过pycharm的调试器跟着它,它将通过try,但是当我尝试使用4退出时。它将一直到最后,然后返回到except块。

我认为我评论过的部分是唯一相关的部分。谢谢你的帮助。

    def UI():
    global exitBool
    global newBool

    if not TV.tvList:
       tv = TurnOnTV()
    if TV.tvList:
        l = list(TV.tvList.keys())
        tv = TV.tvList.get(l[0])

    print("1)change channel\n2)change volume\n3)Turn on another TV\n4)Exit\n5)Choose TV")   #print accepted answers

    choice = input()

    try:
        choice = int(choice)                #try block and exception block
    except:
        print("\nInvalid Choice\n")
        UI()

    choice = int(choice)

    if choice == 1:
        if tv:
            tv.changechannel(input("enter channel: "))
        else:
            print('sorry no tvs are available\n')
    elif choice == 2:
        if tv:
            tv.changevolume(input("Enter in volume: "))
        else:
            print('Sorry no Tvs available')

    elif choice == 3:
        TurnOnTV()
    elif choice == 4:
        exitBool = True     # exit bool to exit main loop
    elif choice == 5:
       tv = ChooseTV(input("Enter in TV name: "))
    else:
        print("Invalid Choice")

    if tv:
        tv.display()

def Main():
    while exitBool == False:       #Main Loop
        UI()

1 个答案:

答案 0 :(得分:1)

当您发现错误并打印“无效选择”时,您不能再次调用UI()。这样你就可以进行递归调用,当内部UI()终止时,代码继续在外部调用。

使用“while”语句重复一段代码,直到用户做出有效选择。