Python3中的异常

Python3中的异常,python,exception,python-3.x,syntax,Python,Exception,Python 3.x,Syntax,如果输入了与菜单无关的数字,我试图使我的代码引发异常错误。目前我的程序刚刚终止 import os mainfile = open('grades.txt', 'a') def main(): choice = 1 try: while choice >= 1 and choice <= 3: display_menu() choice = int(input('Please enter a number

如果输入了与菜单无关的数字,我试图使我的代码引发异常错误。目前我的程序刚刚终止

import os
mainfile = open('grades.txt', 'a')
def main():
    choice = 1
    try:
        while choice >= 1 and choice <= 3:
            display_menu()
            choice = int(input('Please enter a number 1- 3 : '))
            if choice == 1:
                student_entry()
            elif choice == 2:
                student_read()
            elif choice == 3:
                quit_choice()
    except ValueError:
        print('an error has occurred\n')
        return main()
    except:
        print(' An error occurred')
        return main()

def display_menu():
    print()
    print('Press 1 to enter student information\n')
    print('Press 2 to read student information\n')
    print('Press 3 to exit program\n')

main()
当输入的数值超出范围1-3时,如何使其引发异常?我尝试了一些不同的方法,但仍然没有找到答案。我可以编写另一个while语句或添加一些elif语句来处理它,但实际上我需要引发一个异常/错误。

只需使用该语句即可,该语句旨在引发自己的异常

演示:


理想情况下,这将在您尝试对输入执行任何其他操作之前执行。

raise VALUE ERROR。另外,如果。。。埃利夫。。。除此之外,请确保处理所有情况。顺便说一句,这些返回语句是递归的,我认为这不是您真正想要的。递归是什么意思?我觉得我需要声明才能返回到主函数?except:永远不要使用裸except。指定要捕获的异常。就目前情况而言,您的代码甚至捕捉到一个您可能不想捕捉的键盘中断。@m.wasowski指出,感谢您的输入,OP可以只添加一个else语句,因为他已经在测试这三个语句中的任何一个。@Sukritkalla这是正确的,或者最好在执行任何其他操作之前添加if语句。那将是最好的方式。谢谢,我在发帖后回答了我自己的问题,我用了一个else语句来提出错误。@krona如果我的回答对你有帮助,你能接受吗?不太可能。在我看来,检查三个条件的成本并不高,而且代码看起来更好,可读性更强。
if num not in (1, 2, 3):
    raise ValueError