[web服务中的异常]Web服务中的异常处理(1)

更新时间:2017-07-04 来源:编程 点击:

【www.hzclsc.cn--编程】

 Web服务是一种完成分布式计算的相关新方法。在分布式计算中,应用程序被设计为服务运行在服务器上。客户端通过一个可编程的接口访问这些服务。当在Web服务的执行期间发生了异常,Web服务应该不只是捕捉到异常,还应该把异常传回给Web服务的客户端。因为Web服务提供一种平台无关的方法来支持特定功能,所以Web服务中发生的异常也必须以一种平台无关的方式被传回。为了达到这个目的,必须确保Web服务所产生的异常兼容SOAP规范。本文中,我们将了解怎样使用SoapException对象从Web服务中抛出异常,而SoapException对象提供了一种表示SOAP Fault的工业标准方法。我们还将了解怎样在Web服务的客户端应用程序中处理这个异常。


 


  简介
  
  异常是正在执行的程序所遇到的任何错误情形或者意外行为。很多原因都可以引起异常,例如,代码中错误、操作系统资源不可用、公共语言运行时(common language runtime)中的意外情况等等。然而应用程序能够从上述的一些情况中恢复执行,但是大多数运行时异常是不可恢复的。在这种情况下,需要一种有效的方法来处理这些异常并给调用者提供相同的异常。

  用结构化的异常处理方法来处理异常

  在.NET Web服务中,对异常处理支持的关键点是由try...catch..finally语句提供的。关键字try放在可能抛出异常的普通处理代码块之前。关键字catch放在异常处理代码块之前。关键字finally放在那些经常在异常处理后还需要执行的代码块之前。一旦异常从try代码块中抛出,程序流切换到后面的第一个catch代码块。一套设计良好的错误处理代码块可以成功的使程序变得更加健壮,使程序崩溃的机率变得更小,那是因为应用程序处理像这样的错误所采取的方法的缘故。处理异常的最好实践可以总结如下:

  经常用try/finally块包围潜在的可能发生错误的代码,并且把catch语句集中在一个地方。用这种方法,try语句抛出异常,finally语句关闭或释放资源,而catch语句则集中处理异常。

通常,catch语句块从非常特殊到一般来排列异常。这个技巧使得异常被传递到一般catch块之前先处理特殊异常。

  大多数情况下,使用已有的异常类型。新的异常类型应该仅在有计划的情形下引进。

  使用异常的构建方法。一个类的实现中在不同地方抛出同一个异常,这是非常普遍的现象。为了避免出现过量的这类代码,使用助手方法创建异常和返回异常。

  至此,我们已经大致了解处理异常的最好实践,下面就让我们看看怎样从Web服务中抛出异常。

  从Web服务中抛出异常

  在Web服务中处理异常与在Web或Windows应用程序中处理异常没有什么区别。但是,在设计Web服务中的异常块时,必须明白一个事实,即你需要以一种平台无关的基于SOAP规范的方式把异常信息传递给Web服务的客户端。为了达到这个目的,你应该使用SoapException类,它抽象了SOAP Fault创建过程的复杂度。SoapException类具有下列属性,并且这些属性必须在把异常抛出给客户端之前被设定。

  Message--异常的内容

  Code--指定Fault编码类型(例如,ClientFaultCode和ServerFaultCode)的枚举常量

  Actor--发生异常的Web服务方法的URL

  Detail--Detail元素可以用来把更多的异常信息传递给调用者。

本文来源:http://www.hzclsc.cn/ruanjianzixun/211.html

为您推荐

制作电音的软件|电音创作软件KORG将于明年登录Switch

如果你经常关注我们对任天堂Switch的报道,你可能还记得有家公司正在为Switch制作学习编程的软件,接下来要告诉各位,Switch不单可以用来编程,而且还可以作曲!日本知名的电子音乐作曲工作站软件游戏资讯

2020-12-05 17:04:48   做电音的软件   电音软件手机版  

【支付宝小程序在哪里找】支付宝小程序开发者公测地址 支付宝小程序申请公测网址

支付宝小程序目前已经开始公测了,为大家带来支付宝小程序开发者公测地址,支付宝小程序是手机应用嵌入支付宝客户端的一种方法,下面是支付宝小程序申请公测网址! 支付宝小程序开发者公测地址 特色能力开发服务成编程开发

2020-11-22 11:04:37   支付宝小程序怎么建立   支付宝小程序怎么开发  

[c罗]c++ vector用法详解 c++ vector用法总结

c++ vector是在c++中开发过程中c++ vector作为一个十分有用的容器,许多朋友还不是很清楚c++ vector用法,不知道c++ vector到底有什么优秀的用法,不用着急一起来看看编程开发

2020-11-22 11:04:37   pcba   c盘满了怎么清理  

【eclipse如何导出项目】eclipse怎么导出项目 eclipse导出项目教程

eclipse作为用户量十分大的编程开发软件,有许多新手用户朋友或者刚开始接触这款软件的朋友经常会出现在使用eclipse的时候不知道该怎么导出已经读取到软件中的项目,其实很简单,一起来看看ecli教你一招

2020-11-10 07:04:06   eclipse怎么导入项目   eclipse怎么打开项目  

jdk环境变量配置win10|JDK环境变量配置WIN7 WIN7JDK环境变量配置教程

JDK怎么进行环境变量配置一直是困扰着许多入门编程员的问题,许多用户朋友们如果重新换了一台设备,很容易出现不知道怎么进行环境配置的情况,不用担心,小编为大家带来了详细的在WIN7系统下如果进行JDK教你一招

2020-11-07 11:05:38   jdk安装与环境变量配置   安装jdk并配置环境变量