【问题标题】:exceptions advantages over Enums与枚举相比的异常优势
【发布时间】:2014-03-30 21:27:54
【问题描述】:

我用 C++ 编写并理解为什么需要异常。 主要是因为 raii 允许您以非常简单的方式处理您拥有的所有资源。

但是,在 c# 中,我似乎找不到任何使用异常的理由。 它们使代码变慢并需要系统提供更多资源。

异常相对于 c 风格的枚举有什么优势? tyvm:)

【问题讨论】:

  • C++ 中的异常也不是免费的..
  • “它们使代码变慢”。是的。代码使代码变慢。我们为什么要使用它们?因为它们是一种语言功能,可以轻松管理异常情况。我很惊讶您提到 RAII,但看不到 C# 异常与它们的关系,特别是在 using 语句和 try/[catch]/finally 块的范围内使用时。异常捕获了大量有关投掷站点的信息...我需要继续吗?
  • @spender,我认为您的评论可能需要一个完整的答案。
  • @Oren,我从来没有用返回码编码过(或者至少在很长一段时间内都没有),所以我对争论的另一面没有信心。

标签: c# c++ exception


【解决方案1】:

C# 具有自动内存管理,这并不意味着您不需要使用 RAII,因为您有时需要释放非托管内存或资源。

例外是类,它们可以包含您想要多少数据并拥有方法。您还可以使用继承,这有助于您在不重写任何 catch 子句的情况下捕获子类型异常。使用枚举你不能做任何这些。

枚举/错误代码管理迫使您编写可读性较差的代码,因为您将业务代码与错误代码管理混合在一起,因为您必须将子调用错误路由给调用者。这增加了代码的嵌套深度,而且可读性也较差。

【讨论】:

    猜你喜欢
    • 2012-12-01
    • 2012-07-23
    • 1970-01-01
    • 2019-07-17
    • 2011-07-02
    • 2012-04-15
    • 2011-09-02
    • 2023-03-18
    • 2010-11-02
    相关资源
    最近更新 更多