2017-07-26 65 views
-1
try: 
    grossCheck = int(input("How much? (figures only pls.)\n")) 
except ValueError: 
    grossCheck = int(input("How much? (FIGURES ONLY PLS.)\n")) 

tenPees = grossCheck * 0.1 
realPees = grossCheck - tenPees 

print("you've got " + str(realPees)) 

我得到:如何在处理同一个异常时保护我的程序免受其他异常的影响?

ValueError: invalid literal for int() with base 10: 'w' 

During handling of the above exception, another exception occurred: 

的事情是我之前刚处理相同的异常。 我试图处理它,以防万一用户在不破坏程序的情况下多次输入错误的值。

+8

你需要显示你的代码,和完整的追溯。鉴于数据不足。 –

回答

0

你需要以某种方式处理异常。一种方法是不断地问:

try: 
    grossCheck = int(input("How much? (figures only pls.)\n")) 
except ValueError: 
    while True: 
     try: 
      grossCheck = int(input("How much? (FIGURES ONLY PLS.)\n")) 
      break 
     except ValueError: 
      pass 
+0

为什么你在try和catch块中重复代码,检查我的答案,看看更好的处理错误的方式 –

+0

我重复自从OP重复并且我复制了他的功能,但修复了他所问的错误。还要注意他在'input'中有不同的字符串。 –

+0

没关系,你可以根据需要更改字符串,但while循环不应该在block内部,如果你有5个错误,而不是ValueError,那么除了你需要的5个错误之外,除了每个错误 –

0
while 1: 
    try: 
     grossCheck = int(input("How much? (figures only pls.)\n")) 
     tenPees = grossCheck * 0.1 
     realPees = grossCheck - tenPees 

     print("you've got " + str(realPees)) 
    except ValueError: 
     print('You must enter number') 

这是错误处理的正确途径之一。 你得到的错误,是因为你已经把输入放在除了块以外,你不应该这样做,除非你应该打印错误,如果你想要或者只是重复尝试块