gpt4 book ai didi

c# - 捕获大多数派生异常?

转载 作者:太空狗 更新时间:2023-10-29 21:25:19 26 4
gpt4 key购买 nike

在 .NET 中,当捕获异常时,我是否应该始终捕获派生异常(所以不是 ArgumentException,而是派生类型)?

还有:

如果我被要求使用错误代码,这会像这样在构造函数中吗?:

抛出新异常("4000", ex);

或者带有错误代码属性的自定义异常类型? (这可能会与 SqlException 等异常类型混淆,后者的错误代码映射到 SQL Server 错误)。

谢谢

最佳答案

  1. 捕获您知道如何处理的最广泛的异常。

    一般来说,这意味着您将捕捉到一个非常具体的异常。还有一些异常,比如 ArgumentException,根本不应该被捕获,因为它们表示逻辑错误而不是运行时错误。我发现捕获更广泛的异常有用的一个地方是文件 I/O。 IOException 可以是实际要捕获的更高级别的异常。

  2. 如果您被要求使用错误代码,您可以使用异常的消息属性来包装它,但我绝不会以此为由来避免抛出适当类型的异常。这是因为这里有两个不同的问题:

    一个。错误代码在那里提供了一条特定的信息,可以在现场出现故障的情况下查找这些信息。它永远不应该用于以编程方式区分异常类型 b/c 该语言具有为此设计的特定工具:异常类型。

    适当类型的异常在那里提供了一种区分异常的编程方式。该语言是为它设计的,使用它。不要永远抛出一个普通的Exception

    我可能会将错误代码放入 Exception.Data collection 中.这避免了覆盖 Exception.Message 中的消息,否则这些消息对诊断目的非常有帮助。

关于c# - 捕获大多数派生异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086544/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com