gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 04:51:38 26 4
gpt4 key购买 nike

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

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

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

最佳答案

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

我相信无论谁称此为“不良做法”,其目的都是为了强化这样一种观念,即您应该在最接近它们发生的地方捕获异常(即尽可能/适本地在调用堆栈的上层) ).一揽子异常处理程序通常不是一个好主意,因为它会大大减少您可用的控制流。粗粒度异常处理非常重要不是程序稳定性的合理解决方案。不幸的是,许多新手开发人员认为它是,并采用了这种笼统的 try-catch 语句这样的方法。

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

这个 try-catch 与 Main 的主要用法纯粹是为了防止您的程序在非常不寻常的情况下崩溃,并且除了显示(模糊的)用户友好的“fatal error”消息给用户,以及可能在某处记录错误和/或提交错误报告。所以总结一下:这种方法确实有它的用处,但必须非常小心地使用它,而不是出于错误的原因。

关于c# - 为什么 main() 中的 try-catch 不好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/878232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com