简体   繁体   中英

Not catching specific errors with Try and Except

Alright, so I've got a try and except block watching out for exceptions. This is all normal but when you've got a loop you can't stop the code usually, as there's no specific bit saying "Don't catch KeyboardInterrupt errors" or something alike

Is there anything that let's try and except blocks exclude specific errors? (or an alternative)

My code

     while 1:
        if ques == 'n':
            try:
                newweight = int(input('Please enter a number'))
                exit()
            except:
                print('Please enter a valid number')

Now this will create an infinite loop as the "exit()" will not happen as it will get raised an as exception, and it will thus create an infinite loop. Is there any way for this to not happen?

To prevent a user entering a non-integer value, you want to catch a TypeError so you can change except: to except ValueError: and it will then catch any invalid inputs. That should cover you sufficiently.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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