Thrift::例外処理

Thriftでの例外処理について。

macbookへのインストールについてはThriftインストールを参照。
hello, world 的な話はたくさん情報が公開されているのでそちらを参考するといいかと。
ここでは例外処理についてメモしておきます。

TException
ThriftはRPCフレームワークです。
このRPCにおいてなんらかの理由でサーバと通信ができなかった時などの異常系処理。
ThriftではTExceptionという例外オブジェクトを送出します。
PerlとPHPの例を載せますが、以下のように普通にハンドリングすればOKです。

• Perlの場合

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の場合

$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 というプロパティに入っています。

• エラーメッセージ例

TSocket: Could not connect to localhost:9090

RPCにおける異常系処理にも特に頭を悩ませることがないのはうれしいです。

 

Tags: ,

Comments

No comments so far.

  • Leave a Reply
     
    Your gravatar
    Your Name