WCF的例外情况

WCF的例外情况,wcf,exception-handling,Wcf,Exception Handling,WCF客户端可以抛出哪些异常 我通常会捕捉到通信故障异常,通信异常,TIMOUTEException以及一些其他但不时出现的新异常,例如最近发生的quotaExceedeException 没有可捕获的公共基(例外除外),所以有人有完整的列表吗?为什么会有完整的列表?这不是Java 为什么要捕获一个不理解的异常?如果你不知道它的意思,你会如何“处理”它 如果您愿意,可以继续捕获异常以记录它们,但在捕获异常后应该重新调用。让异常传播到一些知道如何处理它的代码中。为什么会有一个完整的列表?这不是Ja

WCF客户端可以抛出哪些异常

我通常会捕捉到
通信故障异常
通信异常
TIMOUTEException
以及一些其他但不时出现的新异常,例如最近发生的
quotaExceedeException


没有可捕获的公共基(例外除外),所以有人有完整的列表吗?

为什么会有完整的列表?这不是Java

为什么要捕获一个不理解的异常?如果你不知道它的意思,你会如何“处理”它


如果您愿意,可以继续捕获异常以记录它们,但在捕获异常后应该重新调用。让异常传播到一些知道如何处理它的代码中。

为什么会有一个完整的列表?这不是Java

为什么要捕获一个不理解的异常?如果你不知道它的意思,你会如何“处理”它


如果您愿意,可以继续捕获异常以记录它们,但在捕获异常后应该重新调用。让异常传播到一些知道如何处理它的代码。

这可能是一个很好的开始:。

这可能是一个很好的开始:。

只是大声想一想。。。一种解决办法可以是:

  • 在自定义异常类中添加异常列表(和异常转换);例如
    CException
  • exception
    块中捕获异常后,立即将另一个异常抛出到
    ceexception
    类中。例如:

    catch(Exception ex){throw new ceexception(“发生错误”,ex);}


  • 看。

    只是大声思考。。。一种解决办法可以是:

  • 在自定义异常类中添加异常列表(和异常转换);例如
    CException
  • exception
    块中捕获异常后,立即将另一个异常抛出到
    ceexception
    类中。例如:

    catch(Exception ex){throw new ceexception(“发生错误”,ex);}


  • 请参阅。

    对于所有WCF异常,
    通信异常
    是基本异常。如果你抓住了这个,你就抓住了所有与WCF相关的东西


    看。它还将很好地显示所有派生类的列表,例如,WCF中可能出现的所有更具体的异常-相当长的列表

    通信异常是所有WCF异常的基本异常。如果你抓住了这个,你就抓住了所有与WCF相关的东西


    看。它还将很好地显示所有派生类的列表,例如,WCF中可能出现的所有更具体的异常-相当长的列表

    不是很有帮助。不幸的是,WCF的设计使得客户端通常需要捕获CommunicationException和TimeoutException,并中止通道,如daft更有用的答案中链接的文章所述。设计糟糕,因为using语句不能用于执行清理,但我们必须接受它。有趣的问题是,像QuoteAExceedeException这样的其他异常类型是否需要这种特殊处理——我怀疑不是,但不确定。其目的并不是要将它们全部捕获。我只想知道应该期待哪一个,这样我就可以决定如何处理它们。因为我不知道QuotaExceed,它被捕获在我的应用程序顶级捕获中,这似乎是处理wcf配置问题的错误位置。如果你不知道它们,那么你不知道如何处理它们,所以别管它们!我以为stackoverflow的整个想法是了解我不知道的事情,这样我就可以(也许)对它们做点什么。@adrianm:了解这个。对于大多数异常,您不能“做点什么”。在几乎所有情况下,正确的行动是什么也不做。如果您实际上无法解决问题,那么您只需记录异常或添加其他信息。除此之外,我向你保证,与人们的期望和普遍的信念相反,你最好什么都不做,没有多大帮助。不幸的是,WCF的设计使得客户端通常需要捕获CommunicationException和TimeoutException,并中止通道,如daft更有用的答案中链接的文章所述。设计糟糕,因为using语句不能用于执行清理,但我们必须接受它。有趣的问题是,像QuoteAExceedeException这样的其他异常类型是否需要这种特殊处理——我怀疑不是,但不确定。其目的并不是要将它们全部捕获。我只想知道应该期待哪一个,这样我就可以决定如何处理它们。因为我不知道QuotaExceed,它被捕获在我的应用程序顶级捕获中,这似乎是处理wcf配置问题的错误位置。如果你不知道它们,那么你不知道如何处理它们,所以别管它们!我以为stackoverflow的整个想法是了解我不知道的事情,这样我就可以(也许)对它们做点什么。@adrianm:了解这个。对于大多数异常,您不能“做点什么”。在几乎所有情况下,正确的行动是什么也不做。如果您实际上无法解决问题,那么您只需记录异常或添加其他信息。除此之外,我向你保证,与人们的期望和普遍看法相反,你最好什么都不做。谢谢。不幸的是,该页面只讨论了我已经捕获的(通信和超时)和我不想捕获的(无效操作、参数等)。谢谢。不幸的是,该页面只讨论我已经捕获的(通信和超时)和我不想捕获的(无效操作、参数等)。为什么这样做是件好事?让异常保持未捕获状态,它将在没有自定义异常的情况下正常传播。@John:我在想,捕捉到了异常