在The Pragmatic Programmer中的何时使用异常小节中,该书代替了以下内容:
retcode = OK;
if (socket.read(name) != OK) {
retcode = BAD_READ;
}
else {
processName(name);
if (socket.read(address) != OK) {
retcode = BAD_READ;
}
else {
processAddress(address);
if (socket.read(telNo) != OK) {
retcode = BAD_READ;
}
else {
// etc, etc...
}
}
}
return retcode;
, 他们更喜欢:
retcode = OK;
try {
socket.read(name);
process(name);
socket.read(address);
processAddress(address);
socket.read(telNo);
// etc, etc...
}
catch (IOException e) {
retcode = BAD_READ;
Logger.log( "Error reading individual: " + e.getMessage());
}
return retcode;
仅仅是因为它看起来更整洁。我全都喜欢整洁的代码,但是,不是不必要地捕获异常是性能瓶颈吗?
我可以理解,我们应该放弃对更整洁的代码的细微优化(至少99%的时间),但是据我所知,捕获异常属于代码类,在运行时会有明显的延迟。因此,我想知道为什么第二段代码比第一段代码更可取?
或者,您更喜欢哪种代码?