On 21-02-2010 03:51, Ryan Kelly wrote:
On Sun, 2010-02-21 at 13:17 +1100, Lie Ryan wrote:
On 02/21/10 12:02, Stef Mientki wrote:
On 21-02-2010 01:21, Lie Ryan wrote:
On Sun, Feb 21, 2010 at 12:52 AM, Stef Mientki
<stef.mien...@gmail.com>  wrote:
hello,

I would like my program to continue on the next line after an uncaught
exception,
is that possible ?

thanks
Stef Mientki


That reminds me of VB's "On Error Resume Next"

I think that's what I'm after ...
A much better approach is to use callbacks, the callbacks determines
whether to raise an exception or continue execution:

def handler(e):
     if datetime.datetime.now()>= datetime.datetime(2012, 12, 21):
         raise Exception('The world has ended')
     # else: ignore, it's fine

def add_ten_error_if_zero(args, handler):
     if args == 0:
         handler(args)
     return args + 10

print add_ten_error_if_zero(0, handler)
print add_ten_error_if_zero(10, handler)
print add_ten_error_if_zero(0, lambda e: None) # always succeeds

Or if you don't like having to explicitly manage callbacks, you can try
the "withrestart" module:

     http://pypi.python.org/pypi/withrestart/

It tries to pinch some of the good ideas from Common Lisp's
error-handling system.

   from withrestart import *

   def add_ten_error_if_zero(n):
       #  This gives calling code the option to ignore
       #  the error, or raise a different one.
       with restarts(skip,raise_error):
           if n == 0:
               raise ValueError
       return n + 10

   # This will raise ValueError
   print add_ten_error_if_zero(0)

   # This will print 10
   with Handler(ValueError,"skip"):
       print add_ten_error_if_zero(0)

   # This will exit the python interpreter
   with Handler(ValueError,"raise_error",SystemExit):
       print add_ten_error_if_zero(0)



   Cheers,

       Ryan


thanks Ryan (and others),

your description of withstart  was very informative,
and I think I understand why it's impossible what I want
(something like madExcept for Delphi / C / C++, see
*http://www.madshi.net/madExceptDescription.htm )
*
It are not the bugs that you can predict / expect to catch,
but the uncaught bugs.

So made some first steps,
and this seems to be sufficient for now,
if you're interested, look here,
  http://mientki.ruhosting.nl/data_www/pylab_works/pw_bug_reporter.html

cheers,
Stef



-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to