在C#中处理异常的最佳实践是什么?

GLP

我的网页中有以下代码:

btnTest_Click(object sender, EventArgs e)
{
    ...
    bool ret=myFunc(...);
    if (ret)
    {...}
    else
    {
        lblStatus.Text="Some Text";
        lblStatus.Visible=true;
    }
}

private bool myFunc(...)
{
    bool ret=false;
    try
    {
        ...
        ret=true;
    }
    catch (Exception ex)
    {
        lblStatus.Text="Other Text";
        lblStatus.Visible=true;
    }
    return ret;
}

如果myFunc中发生异常,则lblStatus始终显示“某些文本”而不​​是“其他文本”。这意味着myFunc中的catch块实际上没有任何意义。我想知道如何解决此代码以更好地处理异常?

更新:也许我的榜样不是很好。但是我的主要目的是询问最佳实践,以了解调用和被调用函数之间的异常处理。

路易斯菲利普

您的catch条款做了很多事情。它捕获每个异常并“忘记”它,将其抑制到调用堆栈的其余部分。这可能很好,但是我将尽力解释您的选择:

您通常有3个选择:

  1. 不在乎异常,让上面的代码处理它
  2. 注意记录异常并使其传播
  3. 异常在给定的上下文中具有其含义,因此不应传播(这是您的情况)

我全部使用。

选项1

您可以只实现您的功能,如果发生异常,则意味着发生了一些错误,并且您只是希望您的应用程序失败(至少到一定程度)

选项2

发生某些异常,您需要做两个(或什至两个)之一

  • 记录错误
  • 将异常更改为对调用者更有意义的另一个异常

选项3该异常是预料之中的,您知道如何完全对其进行反应。例如,在您的情况下,我倾向于认为您不在乎异常的类型,而是希望通过将某些控件设置为给定的文本来实现“良好的默认设置”。

结论

没有银弹。为每种情况使用最佳选项。然而,捕获和“抑制”catch(Exception ex)是很少见的,如果经常看到,通常意味着不好的编程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C#中传播在finally块中引发的异常而不会从catch块中丢失异常的最佳实践是什么?

来自分类Dev

在C ++中定义的最佳实践是什么?

来自分类Dev

在MVC中处理静态内容的最佳实践是什么

来自分类Dev

MySQL中时区处理的最佳实践是什么?

来自分类Dev

在expressJS中处理路线的最佳实践是什么

来自分类Dev

在Breeze中处理多租户安全的最佳实践是什么?

来自分类Dev

在 Laravel 中处理空的雄辩查询的最佳实践是什么?

来自分类Dev

构建异常消息的最佳实践是什么?

来自分类Dev

从C#中的方法返回值或错误消息的最佳实践是什么?

来自分类Dev

在SailsJS中处理异常的最佳实践

来自分类Dev

在Spring Boot中处理异常的最佳方法是什么?

来自分类Dev

处理异常的最佳方式是什么?

来自分类Dev

Vuejs中mixin的最佳实践是什么?

来自分类Dev

在C#中,设置具有依赖项的项目(例如,类库或单独的文件)时的最佳实践是什么

来自分类Dev

处理承诺异常最佳实践

来自分类Dev

处理承诺异常最佳实践

来自分类Dev

在Linux上的生产多线程程序中处理信号的最佳实践是什么?

来自分类Dev

处理verilog模块中输入的无效或非法组合的最佳实践是什么?

来自分类Dev

在Combine中处理发布者错误的最佳实践是什么?(从CoreLocation发布标题更新)

来自分类Dev

从直接访问中隐藏表单处理文件的最佳实践是什么?

来自分类Dev

在Web应用程序中处理未知URL的最佳实践是什么?

来自分类Dev

在奥尔良项目中处理关系数据库中的遗留数据的最佳实践是什么?

来自分类Dev

处理零个对象和属性的最佳实践是什么?

来自分类Dev

处理作曲家废弃包装的最佳实践是什么?

来自分类Dev

烧瓶错误处理的最佳实践是什么?

来自分类Dev

实施Rx处理程序的最佳实践是什么?

来自分类Dev

Extjs 6:处理重复配置的最佳实践是什么

来自分类Dev

Java中同步块/方法中处理异常的最佳实践

来自分类Dev

Spring中处理异常的最佳方法和实践?

Related 相关文章

  1. 1

    在C#中传播在finally块中引发的异常而不会从catch块中丢失异常的最佳实践是什么?

  2. 2

    在C ++中定义的最佳实践是什么?

  3. 3

    在MVC中处理静态内容的最佳实践是什么

  4. 4

    MySQL中时区处理的最佳实践是什么?

  5. 5

    在expressJS中处理路线的最佳实践是什么

  6. 6

    在Breeze中处理多租户安全的最佳实践是什么?

  7. 7

    在 Laravel 中处理空的雄辩查询的最佳实践是什么?

  8. 8

    构建异常消息的最佳实践是什么?

  9. 9

    从C#中的方法返回值或错误消息的最佳实践是什么?

  10. 10

    在SailsJS中处理异常的最佳实践

  11. 11

    在Spring Boot中处理异常的最佳方法是什么?

  12. 12

    处理异常的最佳方式是什么?

  13. 13

    Vuejs中mixin的最佳实践是什么?

  14. 14

    在C#中,设置具有依赖项的项目(例如,类库或单独的文件)时的最佳实践是什么

  15. 15

    处理承诺异常最佳实践

  16. 16

    处理承诺异常最佳实践

  17. 17

    在Linux上的生产多线程程序中处理信号的最佳实践是什么?

  18. 18

    处理verilog模块中输入的无效或非法组合的最佳实践是什么?

  19. 19

    在Combine中处理发布者错误的最佳实践是什么?(从CoreLocation发布标题更新)

  20. 20

    从直接访问中隐藏表单处理文件的最佳实践是什么?

  21. 21

    在Web应用程序中处理未知URL的最佳实践是什么?

  22. 22

    在奥尔良项目中处理关系数据库中的遗留数据的最佳实践是什么?

  23. 23

    处理零个对象和属性的最佳实践是什么?

  24. 24

    处理作曲家废弃包装的最佳实践是什么?

  25. 25

    烧瓶错误处理的最佳实践是什么?

  26. 26

    实施Rx处理程序的最佳实践是什么?

  27. 27

    Extjs 6:处理重复配置的最佳实践是什么

  28. 28

    Java中同步块/方法中处理异常的最佳实践

  29. 29

    Spring中处理异常的最佳方法和实践?

热门标签

归档