Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.python > #95279
| From | Mark Lawrence <breamoreboy@yahoo.co.uk> |
|---|---|
| Subject | Re: Is this a correct way to generate an exception when getting a wrong parameter |
| Date | 2015-08-12 11:43 +0100 |
| References | <87h9o46flw.fsf@Equus.decebal.nl> <mqf3sh$td6$1@ger.gmane.org> |
| Newsgroups | comp.lang.python |
| Message-ID | <mailman.106.1439376239.3627.python-list@python.org> (permalink) |
On 12/08/2015 10:33, Peter Otten wrote:
> Cecil Westerhof wrote:
>
>> I have:
>> ========================================================================
>> accepted_params = {
>> 'pcpu',
>> 'rss',
>> 'size',
>> 'time',
>> 'vsize',
>> }
>> ========================================================================
>>
>> Later I use:
>> ========================================================================
>> if (to_check != 'all') and not(to_check in accepted_params):
>> raise Exception('Used illegal parameter: {0}.\n'
>> 'Accepted ones: {1}'
>> .format(to_check, sorted(accepted_params)))
>> ========================================================================
>>
>> When using 'all' I want to do the work for all accepted parameters.
>> ;-)
>
> Doesn't that make it an "accepted parameter"? Why not add it to the set?
>
>> Is this a correct way to do this, or is there a better way?
>
> I suppose you do this early in a function? Then at least choose a more
> specific exception (e. g. ValueError).
>
> If this is about commandline arguments -- argparse can handle such
> restrictions:
>
> $ cat demo.py
> import argparse
> parser = argparse.ArgumentParser()
> parser.add_argument("--check", choices=["pcpu", "rss"], default="all")
> print(parser.parse_args().check)
> $ python3 demo.py
> all
> $ python3 demo.py --check rss
> rss
> $ python3 demo.py --check ssr
> usage: demo.py [-h] [--check {pcpu,rss}]
> demo.py: error: argument --check: invalid choice: 'ssr' (choose from 'pcpu',
> 'rss')
>
>
The wonderful http://docopt.org/ makes this type of thing a piece of
cake. I believe there's a newer library that's equivalent in
functionality to docopt but I can never remember the name of it, anybody?
--
My fellow Pythonistas, ask not what our language can do for you, ask
what you can do for our language.
Mark Lawrence
Back to comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Is this a correct way to generate an exception when getting a wrong parameter Cecil Westerhof <Cecil@decebal.nl> - 2015-08-12 11:06 +0200
Re: Is this a correct way to generate an exception when getting a wrong parameter Chris Angelico <rosuav@gmail.com> - 2015-08-12 19:25 +1000
Re: Is this a correct way to generate an exception when getting a wrong parameter Peter Otten <__peter__@web.de> - 2015-08-12 11:33 +0200
Re: Is this a correct way to generate an exception when getting a wrong parameter Mark Lawrence <breamoreboy@yahoo.co.uk> - 2015-08-12 11:43 +0100
Re: Is this a correct way to generate an exception when getting a wrong parameter Bernd Waterkamp <Bernd-Waterkamp@web.de> - 2015-08-12 18:42 +0200
csiph-web