Hug*_*are 4 exception try-catch try-catch-finally
我很确定我已经知道答案,但我仍然很好奇在 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
}
Run Code Online (Sandbox Code Playgroud)
假设我们有一个函数,如果它失败了,我们想返回一条错误消息,因为异常是无关紧要的——我们的函数没有成功,用户不需要任何额外的细节。
我一直坚信,如果你能处理错误,就避免异常——因为它不再是异常了,但我想知道关于避免重复自己的意见......你可以执行以下操作来避免重复你自己...
try {
if (success) {
return someSuccessMessage;
}
else {
throw new Exception("User input not correct format");
}
}
catch (Exception ex) {
logError(ex.Message);
return someErrorMessage;
}
Run Code Online (Sandbox Code Playgroud)
这不是最好的例子,但为了简洁起见,我想说明重复代码的要点。
众所周知,异常会导致性能损失,但是对于这种情况有何想法呢?
IMO,仅当超出可纠正情况时才应抛出异常。用户输入不正确的格式是已知的,不应抛出任何异常。
将异常视为灾难性的(数据中心着火、地震等)。这样,您将看到处理“常规错误”和“异常”之间的区别。
是的,抛出和捕获异常会消耗大量性能,最好是避免它们。
归档时间: |
|
查看次数: |
26911 次 |
最近记录: |