gpt4 book ai didi

.net - catch(Exception)、catch() 和 just catch 之间的区别

转载 作者:行者123 更新时间:2023-12-02 14:50:59 29 4
gpt4 key购买 nike

我想知道是否可以安全地编写 catch() 来捕获所有 System.Exception 类型。或者我是否必须坚持使用 catch(Exception) 来完成此任务。我知道对于其他异常类型(例如 InvalidCastException),我必须将类型指定为 catch(InvalidCastException)。换句话说,我问以下代码示例是否相同。

这个...

try
{
//do something
}
catch(Exception)
{
//handle exception
}

这个...

try
{
//do something
}
catch() //Causes compile time error "A class type expected"
{
//handle exception
}

还有这个...

try
{
//do something
}
catch
{
//handle exception
}

更新:我的问题有一个错误。 C# 中不允许使用 catch()

最佳答案

在完美的世界中,您不应该使用catch(Exception)也不catch (单独)根本没有,因为你永远不应该捕获通用的 Exception异常(exception)。您始终应该捕获更具体的异常(例如 InvalidOperationException ...等)。

在现实世界中,catch(Exception)catch (单独)是等价的。我建议使用catch(Exception ex)当您计划仅重用异常变量时,并且 catch (单独)在其他情况下。只是第二个用例的风格问题,但如果个人觉得它更简单。

真正重要的(即使它超出了您的问题范围)是您永远不会编写以下代码:

try
{
}
catch (SpecificException ex)
{
throw ex;
}

这会将堆栈跟踪重置到抛出点。另一方面:

try
{
}
catch (SpecificException)
{
throw;
}

维护原始堆栈跟踪。

关于.net - catch(Exception)、catch() 和 just catch 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8900815/

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