Mercurial > pyshada
changeset 23:2bf87f8e1f3f
Handle error
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Fri, 01 Apr 2011 00:54:10 +0800 |
parents | 08f19afde7bd |
children | 81cbe3a35e18 |
files | shada/comm.py |
diffstat | 1 files changed, 24 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/shada/comm.py Thu Mar 31 22:14:12 2011 +0800 +++ b/shada/comm.py Fri Apr 01 00:54:10 2011 +0800 @@ -77,7 +77,15 @@ def _run(self, callable_name, args, env): server = self._server - calling_gen = server._ns[callable_name](args, env, self) + try: + cmd = server._ns[callable_name] + except KeyError: + raise ValueError, 'invalid command name %s' % (callable_name) + + if not callable(cmd): + raise ValueError, 'invalid command name %s' % (callable_name) + + calling_gen = cmd(args, env, self) if calling_gen == None: self.exit(0) else: @@ -150,15 +158,21 @@ sock = self._sock - cmd = sock.recv(3) - if cmd == 'REQ': - self._handle_req() - elif cmd == 'IPK': - self._handle_ipk() - elif cmd == 'IED': - self._handle_ied() - else: - raise RuntimeError, 'invalid packet %s' % (cmd) + try: + cmd = sock.recv(3) + if cmd == 'REQ': + self._handle_req() + elif cmd == 'IPK': + self._handle_ipk() + elif cmd == 'IED': + self._handle_ied() + else: + raise RuntimeError, 'invalid packet %s' % (cmd) + except: + import traceback + traceback.print_exc() + self.exit(0) + pass pass def recv(self):