ในส่วนเวลาที่จะใช้ข้อยกเว้นใน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;
เพียงเพราะมันดูเรียบร้อย ฉันทุกคนใช้รหัส neater แต่ไม่จำเป็นต้องมีข้อยกเว้นเรื่องคอขวดของประสิทธิภาพหรือไม่?
ฉันสามารถเข้าใจได้ว่าเราควรยกเลิกการเพิ่มประสิทธิภาพจิ๋วสำหรับโค้ด neater (อย่างน้อย 99% ของเวลา) อย่างไรก็ตามจากสิ่งที่ฉันรู้การจับข้อยกเว้นเป็นของคลาสของโค้ด ดังนั้นฉันสงสัยว่าอะไรคือเหตุผลที่ควรใช้โค้ดที่สองมากกว่าโค้ดแรก?
หรือค่อนข้างคุณต้องการรหัสใด