为什么 main() 中的 try-catch 不好?

2024-05-11

有人可以向我解释为什么在 main() 方法中使用 try-catch 来捕获未处理的异常被认为是不合适的吗?

[STAThread]
static void Main()
{
    try
    {
        Application.Run(new Form1());
    }
    catch (Exception e)
    {
         MessageBox.Show("General error: " + e.ToString());
    }
}

我知道这是不好的做法,但不确定为什么。


我不认为它一定不好的做法。不过,有一些注意事项......

我相信,无论是谁称之为“不好的做法”,其目的都是为了强化这样的想法:你应该捕获异常最接近它们发生的地方(即调用堆栈尽可能高/适当)。一揽子异常处理程序通常不是一个好主意,因为它大大减少了可用的控制流。粗粒度的异常处理非常重要not合理的解决方案稳定性。不幸的是,许多初学者开发人员认为确实如此,并采取了诸如此一揽子 try-catch 语句之类的方法。

说到这,if您已经在程序的其余部分正确地使用了异常处理(以细粒度和特定于任务的方式),并相应地处理了错误(而不是仅仅显示通用错误框),then对所有异常的通用 try-catchMain方法可能是一个有用的东西。这里需要注意的一点是,如果您可重复地在此发现错误Maintry-catch,那么您要么有错误,要么本地化异常处理有问题。

这个 try-catch 的主要用法是Main纯粹是为了防止您的程序在非常不寻常的情况下崩溃,并且除了向用户显示(模糊地)用户友好的“致命错误”消息之外,几乎不应该做任何事情,以及可能在某处记录错误和/或提交错误报告。所以得出结论:这个方法does有其用途,但必须非常小心地进行,并且不能出于错误的原因。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 main() 中的 try-catch 不好? 的相关文章