Tyler Crompton <gtr...@gmail.com> added the comment:

I'm in a little over my head as I can't conceptualize __cause__, so I may be 
looking over things.

First, you, Ethan, said the following:

>It's also not difficult to work around if you really want to toss the extra 
>info:
>
>        except NameError:
>            try:
>                fallback_module.getch()
>            except Exception as exc:
>                raise exc from None
>
>A total of three more words to get the desired behavior (and small ones at 
>that).

Counter-argument: if it's just three words, then why was the shorthand without 
the from clause implemented in the first place?

My use case was primarily based on the idea that the unavailability of the 
windows module (from the example) is irrelevant information to, say, Unix 
users. When an exception is raised, the user shouldn't have to see any 
Windows-related exceptions (that is if there is an alternate solution).

One could fix this with a little bit of refactoring, though:

    import sys as _sys

    def getch(prompt=''):
        '''Get and return a character (similar to `input()`).'''

        print(prompt, end='')
        if 'windows_module' in _sys.modules:
            return windows_module.getch()
        else:
            try:
                return fallback_module.getch()
            except Exception:
                raise from None

But it's EAFP. Heck, one could even do the following:

    def getch(prompt=''):
        '''Get and return a character (similar to `input()`).'''

        print(prompt, end='')
        try:
            return windows_module.getch()
        except NameError:
            pass

        try:
            return fallback_module.getch()
        except Exception:
            raise

But that's not really ideal. I've played around with the traceback module a 
little and (very) briefly played with the exceptions themselves. Is there not 
an easier way to suppress a portion of an exception? Like I said, such 
information is irrelevant to non-Windows users.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue15209>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to