【问题标题】:Recreating an exception chain重新创建异常链
【发布时间】:2023-03-25 19:50:02
【问题描述】:

我有一个自定义 Web 服务,当发生异常时,我将异常链序列化并将其发送到客户端,现在可以正常工作了。然而,我想在客户端做的是以某种方式重新创建异常链并抛出它,以便用户可以像在服务器端一样遍历它。

我不希望能够抛出我不知道的异常,我正在考虑抛出WrappedException 的链或一些我设置的堆栈、消息等。

有人知道怎么做吗?

为了避免任何混淆,这是完全自定义的,我在 xml 中向 Web 服务器发出请求并取回 xml,如果抛出异常,我将此链序列化为 xml 并将此 xml 返回给调用客户端。

【问题讨论】:

标签: c# exception-handling


【解决方案1】:

我会使用您自己的评论来序列化捕获相关exception details 的内容。这是安全的,因为它有助于将客户端与处理未知异常类型的异常隔离开来,并为您提供更改异常详细级别的灵活性,以避免潜在的安全漏洞。

要“重新抛出”,您可以抛出一个客户端异常,该异常将此细节作为参数(有点像内部异常)。

如果您仍想尽可能多地使用真正的异常,您可以创建客户端支持的异常类型的显式列表,或反映您的客户端程序集。因此,您可以通过Activator.CreateInstance 创建本地异常,从服务器重新抛出顶级异常。也许你可以结合方法。

【讨论】:

    猜你喜欢
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 2011-12-09
    • 2023-04-01
    相关资源
    最近更新 更多