我正在使用节俭的 HttpClient (C#) 向我设置的 Web 服务器发出 Web 请求,如果该服务器返回 200 以外的值(或我想象的 202),我的请求会引发 TTransport 异常。
我想根据返回的特定状态码来响应这个异常,但是我没有看到任何在异常界面中暴露状态码的东西。我错过了什么吗?我知道异常消息包含状态代码,但我宁愿不必解析该消息来获取状态代码。
如果服务器遇到处理错误,推荐的方法不是抛出 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
}
评论
oneway
调用从不返回任何值,因此也不例外。