Na seção Quando usar exceção no programador pragmático , o livro escreve que, em vez de:
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;
, Eles preferem:
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;
simplesmente porque parece mais limpo. Eu sou tudo para o código mais limpo, no entanto, não é desnecessário captura de exceções um gargalo de desempenho?
Eu posso entender que devemos desistir de otimização minúscula para código mais limpo (pelo menos 99% das vezes), no entanto, pelo que sei, capturar exceções pertence à classe de código que possui um atraso notável no tempo de execução. Por isso, eu queria saber qual é a justificativa de que o segundo trecho de código é preferido sobre o primeiro código?
Ou melhor, qual código você prefere?