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