gpt4 book ai didi

c# - 通过调用函数中的异常离开当前函数

转载 作者:太空宇宙 更新时间:2023-11-03 19:58:23 25 4
gpt4 key购买 nike

假设我有这两个功能:

 private string otherString;
private void Error(string message) {
throw new Exception("Error: " + message);
}
private void Expected(string message) {
Error("Expected " + message + " got " + otherString);
}

现在我想写这样的代码:

 private int ReadInt() {
int result = 0;
if(int.TryParse(otherString, out result)) {
return result;
}
Expected("Int");
//return 0; is need to compile but it will be never reached
}

我知道编译器不能假设通过调用 Expected ReadInt 函数会结束。有没有另一种方法可以做我想做的事情,而不需要在我想退出并出现错误的每个地方都写 throw 语句?

throw new Exception("Error: Expected Digit got " + otherString);

最佳答案

可能您稍后会记录/捕获此异常,这就是问题所在,使用当前设置,您不会(直接)知道异常实际发生的位置,来自 TargetSite 您只会获得有关方法 Error 抛出异常的信息,而不是实际方法 ReadInt 的信息。 (尽管通过 Stack Trace 您可以看到调用层次结构和 ReadInt 方法)

在您认为应该抛出异常的地方抛出异常,而不是从某些通用 方法中抛出。此外,不是抛出基类异常,而是抛出特定异常,如 InvalidArgumentException 等。

附带说明,如果您只关心解析相关异常,那么不要使用 TryParse 方法组,让原始异常冒泡。

关于c# - 通过调用函数中的异常离开当前函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31051563/

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