c# – 为什么在main()中try-catch不好? - 代码日志

c# – 为什么在main()中try-catch不好?

有人可以向我解释为什么认为在main()方法中没有try-catch可以捕获任何未处理的异常?

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

我有一个理解,这是不好的做法,但不知道为什么。

我不认为这是坏的做法。但有一些注意事项…

我相信任何人称之为“不好的做法”的观点是为了强化你应该捕捉最接近他们发生的地方的异常(即尽可能高的呼叫堆栈/适当)。一个全面的异常处理程序通常不是一个好主意,因为它大大减少了可用的控制流程。粗粒度异常处理对于程序稳定性来说是非常重要的一个合理的解决方案。不幸的是,许多初学者开发人员认为它是,并采取这种方法,这个覆盖的try-catch语句。

这样做,如果您在程序的其余部分正确使用异常处理(以细粒度和任务特定的方式),并相应地处理错误(而不是显示一般错误框),那么一般尝试 – 在Main方法中的所有异常的匹配可能是一件有用的事情。有一点需要注意的是,如果您可以重现性地在这个主要的catch-catch中捕获到错误,那么您可能会遇到一个错误或者本地化的异常处理有问题。

与Main的这个try-catch的主要用法将完全是为了防止程序在非常不寻常的情况下崩溃,并且几乎不应该向用户显示(含糊不清)用户友好的“致命错误”消息,以及因为可能在某处记录错误和/或提交错误报告。所以得出结论:这种方法确实有其用途,但必须非常小心,而不是错误的原因。

http://stackoverflow.com/questions/878232/why-are-try-catch-in-main-bad

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 为什么在main()中try-catch不好?