【问题标题】:C# Try/Catch best practices [duplicate]C# Try/Catch 最佳实践
【发布时间】:2013-12-28 06:10:01
【问题描述】:

我正在查看一些生产代码,似乎有很多 Try/Catches,Try 中有一些逻辑,但是一个空的 Catch。

这是正常的做法吗?

你能不能只使用 If 语句?

如果你不打算捕捉任何东西,使用 Try/Catch 似乎很奇怪。

【问题讨论】:

  • bad -- 你应该正确处理异常发生的原因。
  • 空捕获是不好的做法。
  • 这相当于用锡箔包裹一个熔断的保险丝——这是一种触电致死的可靠方法

标签: c# try-catch


【解决方案1】:

我有一个关于一个人的故事,他是开发团队中最好的程序员。没有人能打败他,因为他的所有代码多年来从未抛出任何异常。

当他辞职,其他人开始审查他的代码时,恐怖故事开始了。

他对代码中的每个逻辑都使用了 try 和 empty catch。

开发团队不得不重写他的整个代码库。

【讨论】:

【解决方案2】:

你说对了一部分。

虽然 if-else 不能替代 try-catch。 如果您的代码抛出异常(愿意或不愿意),并且您希望代码继续处理,或者只是向上向调用者抛出另一个异常,那么 try catch 就是要走的路。 我没有看到您的代码以评估 try catch 实现的正确性。 展示它可能会有所帮助。

【讨论】:

    【解决方案3】:

    不幸的是,一个不做任何事情的包罗万象的语句是一种常见的不良编程习惯:

    try
    {
        DoSomething();
    }
    catch (Exception e)
    {
        //empty
    }
    

    它被幽默地称为Pokémon Exception Handling (#2),因为“你只需要抓住他们”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-29
      • 1970-01-01
      • 2011-03-26
      • 2015-12-10
      • 2013-09-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      相关资源
      最近更新 更多