Thriftでの例外処理について。
macbookへのインストールについてはThriftインストールを参照。
hello, world 的な話はたくさん情報が公開されているのでそちらを参考するといいかと。
ここでは例外処理についてメモしておきます。
TException
ThriftはRPCフレームワークです。
このRPCにおいてなんらかの理由でサーバと通信ができなかった時などの異常系処理。
ThriftではTExceptionという例外オブジェクトを送出します。
PerlとPHPの例を載せますが、以下のように普通にハンドリングすればOKです。
* Perlの場合
1 2 3 4 5 6 7 8 9 10 11 |
my $transport = Thrift::Socket->new('localhost', 9090); my $client = HelloClient->new(Thrift::BinaryProtocol->new($transport)); eval { $transport->open(); printf "%s?n", $client->hello("aru"); $transport->close(); }; if($@) { print $@->{message}; } |
* PHPの場合
1 2 3 4 5 6 7 8 9 10 |
$transport = new TSocket('localhost', 9090); $client = new HelloClient(new TBinaryProtocol($transport)); try { $transport->open(); echo $client->hello("aru"); $transport->close(); }catch(Exception $e) { echo $e->getMessage(); } |
普通ですね。
エラーメッセージは message というプロパティに入っています。
* エラーメッセージ例
1 |
TSocket: Could not connect to localhost:9090 |
RPCにおける異常系処理にも特に頭を悩ませることがないのはうれしいです。