Trong phần Khi nào nên sử dụng ngoại lệ trong Lập trình viên thực dụng , cuốn sách viết rằng thay vì:
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;
, họ thích:
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;
đơn giản vì nó trông gọn gàng hơn. Tôi là tất cả cho mã gọn gàng hơn, tuy nhiên không cần thiết phải bắt Ngoại lệ một nút cổ chai hiệu năng?
Tôi có thể hiểu rằng chúng ta nên từ bỏ tối ưu hóa cực nhỏ cho mã gọn gàng hơn (ít nhất 99% số lần), tuy nhiên từ những gì tôi biết, việc bắt ngoại lệ thuộc về lớp mã có độ trễ đáng chú ý trong thời gian chạy. Do đó tôi đã tự hỏi những gì biện minh rằng đoạn mã thứ hai được ưa thích hơn mã đầu tiên?
Hay đúng hơn, bạn thích mã nào?