From b0a712823099d26abf3f1794a5682c141542e095 Mon Sep 17 00:00:00 2001 From: Jason Paryani Date: Tue, 14 Jan 2014 09:05:46 -0800 Subject: [PATCH] Change exception wrapper to detect and raise AttributeError --- capnp/lib/capnp.pyx | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/capnp/lib/capnp.pyx b/capnp/lib/capnp.pyx index dabd7cd..0308288 100644 --- a/capnp/lib/capnp.pyx +++ b/capnp/lib/capnp.pyx @@ -240,17 +240,21 @@ cdef public object wrap_kj_exception(capnp.Exception & exception): cdef public object wrap_kj_exception_for_reraise(capnp.Exception & exception): wrapper = _KjExceptionWrapper()._init(exception) + wrapper_msg = str(wrapper) nature = wrapper.nature if wrapper.nature == 'PRECONDITION': - return ValueError(str(wrapper)) + if 'has no such member' in wrapper_msg: + return AttributeError(wrapper_msg) + else: + return ValueError(wrapper_msg) # elif wrapper.nature == 'LOCAL_BUG': # return ValueError(str(wrapper)) if wrapper.nature == 'OS_ERROR': - return OSError(str(wrapper)) + return OSError(wrapper_msg) if wrapper.nature == 'NETWORK_FAILURE': - return IOError(str(wrapper)) + return IOError(wrapper_msg) ret = KjException(wrapper=wrapper)