On Wed, Feb 20, 2019 at 6:29 AM Terry Reedy <tjre...@udel.edu> wrote: > > On 2/19/2019 10:06 AM, Chris Angelico wrote: > > On Wed, Feb 20, 2019 at 2:04 AM Chris Angelico <ros...@gmail.com> wrote: > >> > >> On Wed, Feb 20, 2019 at 1:59 AM songbird <songb...@anthive.com> wrote: > >>> > >>> MRAB wrote: > >>> ... > >>>> Don't use a bare except, it'll catch _any_ exception. > >>> > >>> that's ok with this code IMO, but i see your point. > >>> > >> > >> Not really, no. It means that ANY bug (barring an outright syntax > >> error) inside the try block will silently move you on to the next > >> check, possibly after printing out the message. > > > > Oh, and not just bugs either. If the user hits Ctrl-C at just the > > right moment, KeyboardInterrupt will be raised. You'll swallow that > > exception silently, preventing the user-requested halt, and going and > > doing the wrong thing. > > KeyboardInterrupt, SystemExit, and GeneratorExit are BaseExceptions but > not Exceptions >
Yes, and "except:" will catch them. Of them, KeyboardInterrupt is the easiest example, as it can be caused by something outside the Python program's control, has specific user-facing meaning, and can happen literally anywhere (IIRC it's "between any two Python bytecodes", in CPython). Suppressing KeyboardInterrupt can be done explicitly, but should not be done accidentally. ChrisA -- https://mail.python.org/mailman/listinfo/python-list