gpt4 book ai didi

c# - 重新抛出无参数 catch 和什么都不做的区别?

转载 作者:可可西里 更新时间:2023-11-01 07:54:18 25 4
gpt4 key购买 nike

假设我在两个不同的程序集中有以下两个类:

//in assembly A
public class TypeA {
// Constructor omitted
public void MethodA
{
try {
//do something
}
catch {
throw;
}
}
}
//in assembly B
public class TypeB {
public void MethodB
{
try {
TypeA a = new TypeA();
a.MethodA();
}
catch (Exception e)
//Handle exception
}
}
}

在这种情况下,MethodA 中的 try-catch 只是提升了异常,但并没有真正处理它。在 MethodA 中使用 try-catch 有什么优势吗?换句话说,这种 try-catch block 和根本不使用有区别吗?

最佳答案

在您的示例中,这样做没有任何优势。但在某些情况下,最好只冒出一个特定的异常。

    public void Foo()
{
try
{
// Some service adapter code

// A call to the service
}
catch (ServiceBoundaryException)
{
throw;
}
catch (Exception ex)
{
throw new AdapterBoundaryException("some message", ex);
}
}

这使您可以轻松识别异常发生在哪个边界。在这种情况下,您需要确保仅针对特定于边界的代码抛出边界异常。

关于c# - 重新抛出无参数 catch 和什么都不做的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717489/

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