gpt4 book ai didi

exception - 在 Try、Catch、Finally 中抛出异常 VS 返回错误

转载 作者:行者123 更新时间:2023-12-01 08:20:31 25 4
gpt4 key购买 nike

我很确定我已经知道答案了,但我仍然很好奇在 Try,Catch,Finally 块中处理错误的意见是什么——但是当你重复自己的时候。

顺便说一句-我不是在谈论用户输入-而是将其用作示例,因为它清晰且简短

考虑一下这段代码......

try {    
if (success) {
return someSuccessMessage;
}
else {
logError("User input not correct format");
return someErrorMessage; // repeats itself
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage; // repeats itself
}

假设我们有一个函数,如果它失败了,我们想返回一条错误消息,因为异常无关紧要——我们的函数没有成功,用户不需要任何额外的细节。

我一直认为,如果你能处理错误,避免异常——因为它不再是异常了,但我想知道关于避免重复自己的意见......你可以做以下事情来避免重复你自己...
try {    
if (success) {
return someSuccessMessage;
}
else {
throw new Exception("User input not correct format");
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage;
}

这不是最好的例子,但为了简洁,我想强调重复代码。

已知异常会导致性能下降,但是对于这种情况有什么想法呢?

最佳答案

我质疑这里的关注点分离。除非这个函数是 UI 的一部分,否则它不应该关心错误消息。它应该抛出异常。此方法的调用者(如果它是 UI 的一部分)可能希望生成一条错误消息以供显示。如果调用者是一个 Web 服务,那么它会想要产生一个 SOAP 错误,它可能不使用相同的消息(如果它使用任何消息)。

我还强烈建议您登录 ex.ToString() 而不是 ex.Message。

关于exception - 在 Try、Catch、Finally 中抛出异常 VS 返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1110069/

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