|
无论你的程序写的多好,总无法避免产生异常。既然产生异常,那我们就应该去捕获它。在.Net CF中一些异常的类型和消息不足以描述问题的根源,那么,查看一下它是否有自定义属性可能会让你立刻知道到底是哪出了问题。 WebException: 可以根据其WebException.Status属性的类型来判断。该类型是WebExceptionStatus枚举,它有16种可能的值,足以描述错误。 成员名称 | 说明 | Success | 未遇到任何错误。 | NameResolutionFailure | 名称解析服务未能解析主机名。 | ConnectFailure | 未能在传输级联系到远程服务点。 | ReceiveFailure | 没有从远程服务器接收到完整响应。 | SendFailure | 未能将完整请求发送到远程服务器。 | PipelineFailure | 该请求是管线请求,并且连接未接收到响应即被关闭。 | RequestCanceled | 请求被取消,WebRequest..::.Abort 方法被调用,或者发生了不可分类的错误。这是 Status 的默认值。 | ProtocolError | 从服务器接收到的响应完成了,但它指示了一个协议级错误。例如,HTTP 协议错误(如 401 访问被拒绝)使用此状态。 | ConnectionClosed | 连接被过早关闭。 | TrustFailure | 未能验证服务器证书。 | SecureChannelFailure | 使用 SSL 建立连接时发生错误。 | ServerProtocolViolation | 此服务器响应不是有效的 HTTP 响应。 | KeepAliveFailure | 指定 Keep-alive 标头的请求连接被意外关闭。 | Pending | 内部异步请求挂起。 | Timeout | 在请求的超时期限内未收到任何响应。 | ProxyNameResolutionFailure | 名称解析服务未能解析代理主机名。 |
当然,你通过WebRequest创建一个请求后,你可以通过请求来获取HttpWebResponse。通过HttpWebResponse.StatusCode来判断当前错误,也可以得到一些精确的消息
|