diff -r 713db33a4ebc Lib/idlelib/rpc.py --- a/Lib/idlelib/rpc.py Sat Mar 10 23:43:12 2012 +0100 +++ b/Lib/idlelib/rpc.py Sun Mar 11 16:33:09 2012 -0500 @@ -185,7 +185,10 @@ method = getattr(obj, methodname) try: if how == 'CALL': - ret = method(*args, **kwargs) + try: + ret = method(*args, **kwargs) + except Exception as exc: + return ("CALLEXC", exc) if isinstance(ret, RemoteObject): ret = remoteref(ret) return ("OK", ret) @@ -257,6 +260,9 @@ if how == "ERROR": self.debug("decoderesponse: Internal ERROR:", what) raise RuntimeError(what) + if how == "CALLEXC": + self.debug("decoderesponse: Call Exception:", what) + raise what raise SystemError(how, what) def decode_interrupthook(self):