Jeff wrote:
> I'm trying to fix up the exceptions for the _sqlite3 module I'm
> implementing. The dbapi spec (PEP 249) requires a very specific
> exception hierarchy, including exceptions derived from StandardError.
> 
> My initial version just used C# Exception classes, but StandardError
> is not a normal class, so that was insufficient. I looked into how the
> existing modules did it (using PythonContext.EnsureModuleException)
> and started to implement that but I've run up against a bit of a
> roadblock: PythonExceptions.CreateThrowable is internal. It's not a
> problem for anything in IronPython.Modules, of course, because of the
> accursed InternalsVisibleToAttribute, but that doesn't help me much
> :).
> 
> Is there a public way to create and throw a Python exception (i.e. a
> BaseException instance)? For now I'm just using reflection, but I
> would like a better way.

There's a public PythonOps.CreateThrowable.  It just forwards the call
to the internal PythonExceptions.CreateThrowable.

> 
> On a related note, there's too much stuff that's used in
> IronPython.Modules but is internal in IronPython - it makes it hard to
> figure out the "proper" (public) way to do things.

Yeah, maybe we should remove the internals visible to and make everything
it relies on public.  I think I'd be mostly alright with that but there
might be a few places where we suffer (like not having access to our AddNoLock
methods for appending to lists).


_______________________________________________
Users mailing list
Users@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to