Skip to content

Instantly share code, notes, and snippets.

@y-oda-oni-juba
Created June 27, 2013 09:22
Show Gist options
  • Save y-oda-oni-juba/5875154 to your computer and use it in GitHub Desktop.
Save y-oda-oni-juba/5875154 to your computer and use it in GitHub Desktop.
msgpack-rpc クライアント言語毎の RPC例外
===============================
クライアント言語毎の PRC例外
===============================
C++ ( jubatus-msgpack-rpc )
--------------------------------
例外クラス階層 CODE コメント
--
std::runtime_error
rpc_error (なし) 基底クラス
timeout_error raw_ref "request timed out"
connect_error raw_ref "connect failed"
too_many_session_error (なし) RPC実行前に発生するので特別扱い
request_cancelled raw_ref "request cancelled"
call_error (なし) 基底クラス
connection_closed_error raw_ref "connection closed"
system_error any negative integer
no_method_error integer 1
argument_error integer 2
remote_error any raw
※ C++ では、RPCエラーが発生した場合、エラー種別は上記の CODE 欄に
記載した「msgpack オブジェクト」によってセッションオブジェクトに
通知, 記録される。これをあとで読み出し、CODE値に該当する例外クラスに
翻訳、RPCエラーを例外としてアプリケーションに送出する
※ raw_ref: バイト列(文字列)へのポインタ値, ref: バイト列(文字列)
Ruby
----
例外クラス階層
--
StandardError CODE コメント
Error
RPCError -
TimeoutError .TimeoutError
TransportError .TransportError
NetworkUnreachableError .TransportError.NetworkUnreachableError 未使用
ConnectionRefusedError .TransportError.ConnectionRefusedError 未使用
ConnectionTimeoutError .TransportError.ConnectionTimeoutError
MalformedMessageError .TransportError.ConnectionRefusedError 未使用, CODE値不正
StreamClosedError .TransportError.StreamClosedError 未使用
CallError .CallError
NoMethodError .CallError.NoMethodError
ArgumentError .CallError.ArgumentError 未使用???
ServerError .ServerError
ServerBusyError .ServerError.ServerBusyError 未使用
RemoteError (空文字列)
RuntimeError .RuntimeError
(user defined error)
※ Ruby では、RPCエラーが発生した場合、エラー種別は上記の CODE 欄に
記載した「文字列」によってセッションオブジェクトに通知, 記録される。
これをあとで読み出し、CODE値に該当する例外クラスに
翻訳、RPCエラーを例外としてアプリケーションに送出する
Python
------
例外クラス階層 CODE コメント
--
Exception
RPCError .RPCError
TimeoutError .TimeoutError
TransportError .TransportError
CallError .NoMethodError コード値不正
NoMethodError .CallError.NoMethodError
ArgumentError .CallError.ArgumentError
※ 例外送出の仕組みは Ruby と同じ
Java
-----
例外クラス階層 CODE
--
RuntimeException
RPCError (なし) 基底クラス
RemoteError RemoteError
ArgumentError RemoteError.ArgumentError
NoMethodError RemoteError.NoMethodError
TimeoutError TimeoutError
TransportError TransportError
※ 例外送出の仕組みは Ruby と同じ
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment