Web サーバーを介した RPC 呼び出しのディスパッチャに取り組んでいます。webserver クラスには、rpc_echo、rpc_add など (接頭辞 rpc_ が付く) のような、リモートからアクセスできるメソッドがいくつかあります。ディスパッチャー メソッドでは、対応するメソッドを見つけて、辞書に準備された引数を指定して呼び出すことができます。
try:
handler = getattr(self, 'rpc_' + request['method']) # identify handler
response['result'] = handler(**params) # assign arguments and call handler
except (AttributeError, KeyError):
# exceptions: requested method -> key, call method -> attr, callable -> attr
raise JSONRPCError('unknown method.')
except TypeError:
raise JSONRPCError('parameters don\'t match method prototype.')
これは正常に動作しています。ただし、ハンドラー内で例外がスローされると、エラー チェックが妨げられ、間違った結論につながります。例外がハンドラー内でスローされたかどうかを確認するにはどうすればよいですか? したがって、間違った呼び出しまたはサーバー エラーですか?