propagation of error messages in matplotlib

I've updated backend_gtk.py in cvs to use a default

    > exception handler, and noticed a few things in the process:
    > - sys.excepthook does not catch SystemExit, which is what
    > we wanted anyway.

I think the full exception should be printed. It makes debugging very
hard, otherwise. In fact, while recently debugging some code, I
commented out the exception handler for this reason. matplotlib.cbook
provides a method exception_to_str to convert a traceback to a string.

    > - for some errors I needed to display a matplotlib message
    > rather than the default exception message, or to raise an
    > exception where error_msg () was used with no exception. I
    > added an 'MPLError' exception, its probably best to move it
    > into a central file if other people need to use it also.

Perhaps in matplotlib.__init__ ?

    > - changing from error_msg() to raise exception means the
    > rest of the method will not execute, which I hadn't thought
    > about. This is no good for 'get_filename_from_user()' where
    > I want to loop until a file (or Cancel) is selected. So I
    > think GTK still has a need to use of a popup message dialog
    > occasionally. And for print_figure() it means the section
    > of code to restore figure settings will not get executed
    > after an error.

I agree that a general facility to popup a message is useful How
abouts we follow Jochen's suggestion and make is a FigureManager
method?

As for your get_filename / restore figure problems, can't these be
addressed by try/catching the exceptions locally, and restoring the
figure state before forwarding the exception onwards?

JDH

OK, I've added "MPLError' a subclass of Exception to matplotlib.__init__

Steve

···

On Tue, 2004-11-23 at 15:28 -0600, John Hunter wrote:

    > - for some errors I needed to display a matplotlib message
    > rather than the default exception message, or to raise an
    > exception where error_msg () was used with no exception. I
    > added an 'MPLError' exception, its probably best to move it
    > into a central file if other people need to use it also.

Perhaps in matplotlib.__init__ ?