转载:http://www.cnblogs.com/ahdung/p/3953431.html

说明:【干净】指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”。

前提:你对WS有编写权。就是说如果你调的是别人写的WS,那么也许只能通过字符串处理的方式才能得到干净的ex.Message。

先看示例:

- WS方法:

/// <summary>
/// 测试WS抛异常
/// </summary> /// <param name="isSoapEx">为true就抛出SoapException,否则抛出Exception</param> /// <param name="errMsg">自定义异常消息</param> [WebMethod] public string Test(bool isSoapEx, string errMsg) { throw isSoapEx ? new SoapException(errMsg, SoapException.ServerFaultCode) : new Exception(errMsg); }

- 客户端调用:

可以看到,如果WS抛出的是Exception,客户端得到的ex.Message就是含有“杂质”的,所以得到干净异常消息的要诀之一就是:

WS要抛出SoapException异常。

这就是为什么说你要有对WS的编写权,因为别人的WS如果抛的不是SoapException,你就会得到先天含有杂质的ex.Message,需要经过一定加工才行。

刚刚说的是要诀之一,那就是说即便WS抛的是SoapException,也有可能得到不干净的ex.Message,如图:

这是由ASP.NET程序的【自定义错误消息】设定为“Off”引起的,把WS的web.config中的configuration\system.web\customErrors节点的mode属性设为“On”或“RemoteOnly”即可。如图:

所以,总结一下,以我目前所知,要想在客户端得到干净的ex.Message,要诀有二:

1、WS要把异常封装为SoapException再抛出

2、WS的【自定义错误消息】不能设为Off

转载于:https://www.cnblogs.com/51net/p/4431757.html

添加引用方式抛出和捕获干净的WebService异常相关推荐

  1. Java异常处理学习笔记(抛出、捕获、finally、异常传播、NPE、断言、日志)

    Java中的异常是什么? Java异常本质上一种class,继承关系如下图所示,Error是严重的错误,程序无能为力,RuntimeException是在运行过程中发生的异常,其余的异常在编写程序的时 ...

  2. java泛型程序设计——泛型类的静态上下文中类型变量无效+不能抛出或捕获泛型类的实例

    [0]README 0.1) 本文描述+源代码均 转自 core java volume 1, 旨在理解 java泛型程序设计 的 泛型类的静态上下文中类型变量无效+不能抛出或捕获泛型类的实例 的知识 ...

  3. java异常在哪一层捕获_当在一个方法的代码中抛出一个检测异常时,该异常或被方法中的 ( )结构 捕获,或者在方法的 ( ) 中声明_学小易找答案...

    [填空题]当异常已经被定义时,必须通过( ) 语句来处理它. [填空题]Catch 子句包含( )的程序段 [单选题]下列java语言的常用异常类中,属于检测异常的是() [单选题]自定义异常类时,可 ...

  4. 启动HBase抛出org.apache.hadoop.hbase.ClockOutOfSyncException异常:hmaster正常,节点hregionserver启动失败

    启动HBase抛出org.apache.hadoop.hbase.ClockOutOfSyncException异常 原因 节点间时间不一致,时间同步出了问题: 解决 进行时间同步: [root@cm ...

  5. weblogic启动后,抛出大量的java.lang.ArrayIndexOutOfBoundsException异常

    weblogic启动后,抛出大量的java.lang.ArrayIndexOutOfBoundsException异常 参考文章: (1)weblogic启动后,抛出大量的java.lang.Arra ...

  6. 关于用鲁大师对显卡性能进行评测时抛出“评测中切换页面”的异常的解决方案。

    第一:看一下评测时是否有其他窗口弹出,或者有其他程序的内容展示. 比如输入法的那个小语言栏(或者其他软件的内容展示),在评测时如果有的话,就会抛出"评测中切换页面"的异常. 注意: ...

  7. [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开...

    一.程序错误 编译错误,即语法错误.程序就无法被生成运行代码. 运行时错误 不可预料的逻辑错误 可以预料的运行异常 例如: 动态分配空间时可能不会成功 打开文件可能会失败 除法运算时分母可能为0 整数 ...

  8. java 捕捉的异常抛出_Java异常抛出和捕获

    Java中把非正常情况分为两种,异常(Exception)和错误(Error). 异常.png Error:一般是指与虚拟机相关的问题(虚拟机错误.线程死锁等),这种错误无法回复或不可能捕获 Exce ...

  9. 抛出与抽象相对应的异常(61)

    2019独角兽企业重金招聘Python工程师标准>>> 如果方法抛出的异常和外层执行任务没有明显的联系,会使人很困惑 更高层实现应该捕获底层异常,并且抛出按照高层逻辑进行解释的异常 ...

最新文章

  1. 漫谈可视化Prefuse(四)---被玩坏的Prefuse API
  2. class ts 扩展方法_一些让程序保持可扩展的 TypeScript 技巧
  3. SQL Server 2005合并列成字符串 2008-11-07
  4. 数据结构(一)--稀疏数组
  5. httpurlconnect设置中文参数_数控三菱CNC机床参数的设置及报警解除!
  6. Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方。
  7. PHP学习记录_基本语法
  8. iphone11系列的尺寸_揭秘iPhone12日常使用的2大隐患:还不如iPhone11?|iphone11|iphone12|电池|手机|电池容量|iphone...
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的值班管理系统
  10. centos6.5 升级python2.6到python2.7
  11. Android中对已安装应用的管理实现
  12. HW浮动静态路由及负载均衡
  13. 初二生态系统思维导图_鑫讲堂:初二年级十一月微讲座汇报(二)
  14. Javascript 笔记与总结(2-8)对象2
  15. CAD迷你看图 for Mac(MiniCAD)
  16. android 常用机型尺寸_目前主流的智能手机的屏幕尺寸与分辨率是多少?
  17. 宽带多拨-路由器设置
  18. Kattis Zamka
  19. c语言网页版在线编译器_梦幻西游网页版在线玩 梦幻西游网页版礼包兑换码_梦幻西游网页版...
  20. linux 自动降频,Linux资格认证:Ubuntu下对CPU进行降频

热门文章

  1. Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形
  2. IntelliJ IDEA中用快捷键自动创建测试类
  3. pyspark汇总小结
  4. 正则表达式(括号)、[中括号]、{大括号}的区别小结
  5. MyBatis批量插入几千条数据慎用foreach
  6. Python 扩展 Op
  7. 机器学习算法的优点和缺点总结
  8. 2021年大数据Kafka(十二):❤️Kafka配额限速机制❤️
  9. 2021年大数据HBase(八):Apache Phoenix的基本介绍
  10. 2021年大数据常用语言Scala(二十九):scala面向对象 单例对象