如何从TTransport例外获取HTTP状态代码?

时间:2013-11-01 17:32:46

标签: c# thrift

我正在使用thrift HttpClient(C#)向我设置的Web服务器发出Web请求,如果该服务器返回的内容不是200(或我想象的202),我的请求会抛出TTransport异常。

我想根据返回的特定状态代码响应此异常,但是我没有看到任何在异常接口中公开状态代码的内容。我错过了什么吗?我知道异常消息包含状态代码,但我不必解析该消息以获取状态代码。

1 个答案:

答案 0 :(得分:0)

如果服务器遇到处理错误,推荐的方法不会抛出HTTP 500.相反,服务器应通过异常发出信号。考虑以下Thrift IDL:

exception MyProcessingError
{
  1: string reason
  2: string errorDetails
  3: string recommendedAction
}

service FooBar {
  void ProcessPayments( 1: double amount; 2: string receiver) 
  throws (1: MyProcessingError mpe)
}

与args和struct字段类似,可以声明多个异常类型。客户端可以像往常一样捕获这些异常:

try
{
    client.ProcessPayments( 47.11, "Dagobert");
}
catch (MyProcessingError e)
{
    // process exception
}

<强>说明

  • 服务器只能抛出IDL中声明的异常 特别的电话。
  • 此外,oneway调用永远不会返回任何值,因此不会 例外情况。