繁体   English   中英

如何解决“在处理上述异常期间,发生了另一个异常:”

[英]How to fix "During handling of the above exception, another exception occurred: "

每当我输入的数据不止一次导致程序崩溃时,我该如何解决这个错误。 这是我的代码及其输出的内容,它应该不断重复,直到输入正确的数据。

代码

flag=False

while flag==False:
    try:
        number=int(input("Enter number of books: "))
    except ValueError:
        print("Please enter number of books as a positive whole number ")
        number=int(input("Enter number of books: "))
    else:
        flag=True

错误

Traceback (most recent call last):
  File "C:\Users\Alex\OneDrive\Documents\ComputerScience\Intro2.py", line 5, in <module>
    number=int(input("Enter number of books: "))
ValueError: invalid literal for int() with base 10: '3.3'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Alex\OneDrive\Documents\ComputerScience\Intro2.py", line 8, in <module>
number=int(input("Enter number of books: "))

ValueError: int() 以 10 为底的无效文字:'3.4'

试试这个,它会评估你的字符串是否是数字,然后打破外观。 异常处理在计算方面是昂贵的,应尽可能避免

while True:
    no_of_books = input("enter number of books")
    if no_of_books.isdigit():
        break

您的代码没有不断重复的原因是它在第 5 行出现异常,该异常被包装在 try 块中,然后在 except 块中它在第 8 行引发了另一个异常,该异常没有被包装在 try 块中,因此它终止了

更新以响应评论,只需将您的字符串转换为这样的 int 然后使用int_number_of_books作为 int

while True:
    no_of_books = input("enter number of books")
    if no_of_books.isdigit():
        int_number_of_books = int(no_of_books)
        break
if int_number_of_books <= 0:
    # your code here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM