【发布时间】:2010-11-09 18:02:40
【问题描述】:
我很确定我已经知道答案,但我仍然很好奇在处理 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;
}
这不是最好的例子,但为了简洁起见,我想强调重复代码。
已知异常会导致性能损失,但对于这种情况有什么想法?
【问题讨论】:
-
这是一个典型的异常滥用控制流的例子,在这里讨论Why not use exceptions as regular flow of control?
标签: exception try-catch try-catch-finally