110,534
社区成员
发帖
与我相关
我的任务
分享
catch (WebException ex)
{
.....
}
例如你的客户端是 Http协议,就可以写catch (WebException ex)
{
var status = ((HttpWebResponse)ex.Response).StatusCode;
}
假设通常是在表现层才去统一捕获异常,则可能是写static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
var webError = e.ExceptionObject as WebException;
if (webError != null)
{
var response = webError.Response;
......
}
}
这类处理。
总之,不是直接读取 Response.StatusCode,而是要到你不惑异常的模块去中读取。
另外,根据协议不同,有些人可能习惯于用 200 OK 状态、但是返回特定的字符串来“表示”业务处理出错。这就是要根据业务协议来看了,这种设计没有遵循 .net 框架。但是也不少见。throw new MyException("出错啦。", innerException);
这类语句。你可以自己看看客户端会得到什么结果。
整个系统都会有一个异常处理的框架,客户端也是如此。当客户端得到的返回状态不是 200 OK,你的客户端代码应该走异常处理流程。你不可能去通过什么 response.Code 或者 Status 去得到,你应该到 catch 语句块或者 UnhandledException 事件处理等等与你的客户端系统相适应的“异常处理模块”中去查看 Exception 对象的具体类型(子类型),这些 Exception 对象会返回 http 返回码。