gpt4 book ai didi

C# throw 语句多余?

转载 作者:行者123 更新时间:2023-11-30 18:49:43 27 4
gpt4 key购买 nike

我有一个看起来像这样的代码(抱歉使用 Java 括号样式):

class SomeClass {
public static void doSomethingRisky() {
try {
SomeRiskyFunction();
} catch (Exception e) {
throw e;
}
}
}

class MainClass {
public void callSomethingRisky() {
try {
SomeClass.doSomethingRisky();
} catch (Exception e) {
FinallyHandleTheException(e);
}
}
}

基本上,SomeClass 将是一个库,我想将其设计为所有异常都将由调用程序处理(调用程序可能会也可能不会选择显示有关异常的消息)。

我的问题是关于 SomeClassdoSomethingRisky()try/catch&throw 的使用。是多余的还是有必要的?我的意思是,如果我将其关闭并且该函数在运行时确实遇到异常,它是否会导致程序崩溃,因为该函数内部没有任何内容捕获异常,或者它是否仍将其传递给调用者(callSomethingRisky()) 它在哪里被优雅地处理?

Java 的相同问题。谢谢!

最佳答案

doSomethingRisky 中带有 throw e;try/catch 只做一件事:它破坏堆栈-跟踪信息。 可能 不是您想要的,因此应该删除 try/catch - 它已经冒泡了-符合预期。

关于信息,如果它只是throw;(而不是throw e;)那么它只是多余的,而不是破坏性的。

关于C# throw 语句多余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17235159/

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