assert expressions

Wanderer wanderer at dialup4less.com
Tue Jul 24 22:47:41 CEST 2012


On Jul 24, 4:31 pm, Ian Kelly <ian.g.ke... at gmail.com> wrote:
> On Tue, Jul 24, 2012 at 1:57 PM, Wanderer <wande... at dialup4less.com> wrote:
> > If I use the code
>
> > assert False, "unhandled option"
>
> > I get output like:
>
> > option -q not recognized
> > for help use --help
>
> > What other expressions can I use other than "unhandled option"? Is there a list somewhere?
>
> Are you using argparse or optparse or getopt or something else
> altogether?  And where are you placing this assert?  It would be
> helpful to see some actual code to understand what you are doing.
>
> And by the way, assert is a very bad way to check user input or to
> unconditionally raise an exception.  The reason is that if Python is
> invoked with -O, then all assertions are removed from the compiled
> bytecode, and then your unconditional exception code doesn't raise any
> exception at all.  If you want to raise an exception, just do it:
>
> raise Exception("unhandled option")
>
> Ideally, you would also subclass Exception to create a more specific
> exception class for your custom exception:
>
> class UnhandledOptionException(Exception):
>     pass
>
> # Then, later on...
>
> raise UnhandledOptionException("-q")

I left out the Usage class

class Usage(Exception):
    def __init__(self, msg):
        self.msg = msg




More information about the Python-list mailing list