[Zope] error_type in Python Script?

Jim Gallacher jgallach@albedo.net
Thu, 25 Jul 2002 10:30:19 -0400


Hi Kyler,

On Wed, 24 Jul 2002 11:46:41 -0500
Kyler Laird <Kyler@Lairds.com> wrote:

> Within an except: block, how do I find the type of
> exception that was raised?  In plain Python, it is
> sys.exc_type.  In DTML, it's error_type.  I do not
> see how to get it in a Python Script.
> 
> I looked for the answer on the Web with no joy.  A
> pointer to where I should have looked will be
> appreciated.
> 
> Thank you.
> 
> --kyler
> 

I just went through this same frustration a few days ago. Dieter
suggested checking the README tab for PythonScripts.

<quote>
>From the README.txt:
    The easiest way to make modules available to Python scripts on
    your site is to create a new directory in your Products directory
    containing an "__init__.py" file. At Zope startup time, this
    "product" will be imported, and any module assertions you make
    in the __init__.py will take effect. Here's how to do it:

      o In your Products directory (either in lib/python of your
        Zope installation or in the root of your Zope install,
        depending on your deployment model), create a new directory
        with a name like "GlobalModules".

      o In the new directory, create a file named "__init__.py".

      o Edit the __init__.py file, and add calls to the 'allow_module'
        function (located in the Products.PythonScripts.Utility module),
        passing the names of modules to be enabled for use by scripts.

      o Restart your Zope server. After restarting, the modules you enabled
        in your custom product will be available to Python scripts.
</quote>

Here is my __init__.py file:

# Global module assertions for Python scripts
from Products.PythonScripts.Utility import allow_module
allow_module('sys.exc_info')

You can now access the error_type and error_value from a python script
error_type = sys.exc_info()[0]
error_value = sys.exc_info()[1]

It still seems to me there should be a standard way to do this within
Zope but this worked for me in a pinch.

Jim Gallacher
~