AppleSeeker's Tech Blog
Welcome to AppleSeeker's space

无论你的程序写的多好,总无法避免产生异常。既然产生异常,那我们就应该去捕获它。在.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来判断当前错误,也可以得到一些精确的消息。

成员名称

说明

Continue

等效于 HTTP 状态 100Continue 指示客户端可能继续其请求。

SwitchingProtocols

等效于 HTTP 状态 101SwitchingProtocols 指示正在更改协议版本或协议。

OK

等效于 HTTP 状态 200OK 指示请求成功,且请求的信息包含在响应中。这是最常接收的状态代码。

Created

等效于 HTTP 状态 201Created 指示请求导致在响应被发送前创建新资源。

Accepted

等效于 HTTP 状态 202Accepted 指示请求已被接受做进一步处理。

NonAuthoritativeInformation

等效于 HTTP 状态 203NonAuthoritativeInformation 指示返回的元信息来自缓存副本而不是原始服务器,因此可能不正确。

NoContent

等效于 HTTP 状态 204NoContent 指示已成功处理请求并且响应已被设定为无内容。

ResetContent

等效于 HTTP 状态 205ResetContent 指示客户端应重置(或重新加载)当前资源。

PartialContent

等效于 HTTP 状态 206PartialContent 指示响应是包括字节范围的 GET 请求所请求的部分响应。

MultipleChoices

等效于 HTTP 状态 300MultipleChoices 指示请求的信息有多种表示形式。默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 头的内容。

Ambiguous

等效于 HTTP 状态 300Ambiguous 指示请求的信息有多种表示形式。默认操作是将此状态视为重定向,并遵循与此响应关联的 Location 头的内容。

MovedPermanently

等效于 HTTP 状态 301MovedPermanently 指示请求的信息已移到 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 头。

Moved

等效于 HTTP 状态 301Moved 指示请求的信息已移到 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。

Found

等效于 HTTP 状态 302Found 指示请求的信息位于 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。

Redirect

等效于 HTTP 状态 302Redirect 指示请求的信息位于 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求将使用 GET 方法。

SeeOther

等效于 HTTP 状态 303。作为 POST 的结果,SeeOther 将客户端自动重定向到 Location 头中指定的 URI。用 GET 生成对 Location 头所指定的资源的请求。

RedirectMethod

等效于 HTTP 状态 303。作为 POST 的结果,RedirectMethod 将客户端自动重定向到 Location 头中指定的 URI。用 GET 生成对 Location 头所指定的资源的请求。

NotModified

等效于 HTTP 状态 304NotModified 指示客户端的缓存副本是最新的。未传输此资源的内容。

UseProxy

等效于 HTTP 状态 305UseProxy 指示请求应使用位于 Location 头中指定的 URI 的代理服务器。

Unused

等效于 HTTP 状态 306Unused 是未完全指定的 HTTP/1.1 规范的建议扩展。

TemporaryRedirect

等效于 HTTP 状态 307TemporaryRedirect 指示请求信息位于 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。

RedirectKeepVerb

等效于 HTTP 状态 307RedirectKeepVerb 指示请求信息位于 Location 头中指定的 URI 处。接收到此状态时的默认操作为遵循与响应关联的 Location 头。原始请求方法为 POST 时,重定向的请求还将使用 POST 方法。

BadRequest

等效于 HTTP 状态 400BadRequest 指示服务器未能识别请求。如果没有其他适用的错误,或者如果不知道准确的错误或错误没有自己的错误代码,则发送 BadRequest

Unauthorized

等效于 HTTP 状态 401Unauthorized 指示请求的资源要求身份验证。WWW-Authenticate 头包含如何执行身份验证的详细信息。

PaymentRequired

等效于 HTTP 状态 402。保留 PaymentRequired 以供将来使用。

Forbidden

等效于 HTTP 状态 403Forbidden 指示服务器拒绝满足请求。

NotFound

等效于 HTTP 状态 404NotFound 指示请求的资源不在服务器上。

MethodNotAllowed

等效于 HTTP 状态 405MethodNotAllowed 指示请求的资源上不允许请求方法(POST GET)。

NotAcceptable

等效于 HTTP 状态 406NotAcceptable 指示客户端已用 Accept 头指示将不接受资源的任何可用表示形式。

ProxyAuthenticationRequired

等效于 HTTP 状态 407ProxyAuthenticationRequired 指示请求的代理要求身份验证。Proxy-authenticate 头包含如何执行身份验证的详细信息。

RequestTimeout

等效于 HTTP 状态 408RequestTimeout 指示客户端没有在服务器期望请求的时间内发送请求。

Conflict

等效于 HTTP 状态 409Conflict 指示由于服务器上的冲突而未能执行请求。

Gone

等效于 HTTP 状态 410Gone 指示请求的资源不再可用。

LengthRequired

等效于 HTTP 状态 411LengthRequired 指示缺少必需的 Content-length 头。

PreconditionFailed

等效于 HTTP 状态 412PreconditionFailed 指示为此请求设置的条件失败,且无法执行此请求。条件是用条件请求标头(如 If-MatchIf-None-Match If-Unmodified-Since)设置的。

RequestEntityTooLarge

等效于 HTTP 状态 413RequestEntityTooLarge 指示请求太大,服务器无法处理。

RequestUriTooLong

等效于 HTTP 状态 414RequestUriTooLong 指示 URI 太长。

UnsupportedMediaType

等效于 HTTP 状态 415UnsupportedMediaType 指示请求是不支持的类型。

RequestedRangeNotSatisfiable

等效于 HTTP 状态 416RequestedRangeNotSatisfiable 指示无法返回从资源请求的数据范围,因为范围的开头在资源的开头之前,或因为范围的结尾在资源的结尾之后。

ExpectationFailed

等效于 HTTP 状态 417ExpectationFailed 指示服务器未能符合 Expect 头中给定的预期值。

InternalServerError

等效于 HTTP 状态 500InternalServerError 指示服务器上发生了一般错误。

NotImplemented

等效于 HTTP 状态 501NotImplemented 指示服务器不支持请求的函数。

BadGateway

等效于 HTTP 状态 502BadGateway 指示中间代理服务器从另一代理或原始服务器接收到错误响应。

ServiceUnavailable

等效于 HTTP 状态 503ServiceUnavailable 指示服务器暂时不可用,通常是由于过多加载或维护。

GatewayTimeout

等效于 HTTP 状态 504GatewayTimeout 指示中间代理服务器在等待来自另一个代理或原始服务器的响应时已超时。

HttpVersionNotSupported

等效于 HTTP 状态 505HttpVersionNotSupported 指示服务器不支持请求的 HTTP 版本。

 

SocketException:

通过ErrorCode属性获得详细信息。返回的是有系统的ErrorCode。这个只能查System Error Codes了。

 

SqlCeException:

错误存放在SqlCeErrorCollection中,需要对Errors属性进行迭代,返回SqlCeError对象,通过该对象的NativeError属性来获得错误号。有关这些错误的更多信息,请参见 SQL Server Mobile Books Online(《SQL Server Mobile 联机丛书》)。的“Troubleshooting”(疑难解答)一节中的“SQL Server Mobile Errors”(SQL Server Mobile 错误)。

可以参考黎波的《正确处理SqlCeException的方法

 

InvaildOperationExceptio:

可能在调用一个方法时遇到这个情况,可以检查下该对象的状态。

 

MissingMethodException:

在PInvoke时常发生。它就是一个通过查看Message属性来确定问题的根源。

比如在当写错了一个dll时,就会报“无法找到PInvokeDLL”

当dll没错,函数名错误时,就会报“无法找到PInvokeDLL中的入口点”

 

MissingManifestResourceException:

不能正确得到资源名称,可以通过检查程序集,找到资源的正确名称。

 

TypeLoadException:

加载类型失败,运行需要的某个程序集在目标设备(程序文件夹中获全局程序集缓存中)不存在。

posted on 2008-08-04 21:08  AppleSeeker(冯峰)  阅读(3006)  评论(4编辑  收藏  举报