How to pop the interpreter's stack?

John Nagle nagle at animats.com
Fri Dec 24 13:51:32 EST 2010


On 12/24/2010 3:24 AM, Carl Banks wrote:
> On Dec 24, 1:24 am, Steven D'Aprano<steve
> +comp.lang.pyt... at pearwood.info>  wrote:
  All I'm
>> suggesting is that there should be a way of reducing the boilerplate
>> needed for this idiom:
>>
>> def _validate_arg(x):
>>      if x == 'bad input': return False
>>      return True
>>
>> def f(arg):
>>      if not _validate_arg(arg):
>>          raise ValueError
>>      process(arg)
>>
>> to something more natural that doesn't needlessly expose implementation
>> details that are completely irrelevant to the caller.

     How about

	raise ValueError("Bad input %s to validate_arg" % (repr(arg),))

You can pass arguments to most exceptions, and the content of the
exception is determined entirely by the code raising it.

If end users are seeing uncaught tracebacks, the program is broken.
It's usually worth it to catch EnvironmentError near the outermost
level of the program, since most non program bug events, like I/O
and network errors. will raise some subclass of EnvironmentError.

					John Nagle



More information about the Python-list mailing list