2015-09-28 18 views
9

Giả sử tôi có chức năng a ném một ngoại lệ $e. Do đó, theo số phpdoc tôi phải có chú thích @throws theo định nghĩa của a.Chú thích ngoại lệ cho ngoại lệ được truyền bá

Khi tôi có một chức năng b gọi a

function b() { 
    a(); 
} 

là nó tốt thực hành/thực hành xấu/đúng/sai để có một chú thích @throw trên định nghĩa của b chỉ ra rằng b có thể ném rằng loại ngoại lệ?

+0

PHPDoc được dựa trên JavaDoc và tôi chắc chắn rằng trong Java bạn sẽ bao gồm khai báo '@ throws' trên phương thức b() của bạn tại đây. Nhưng tôi nghĩ câu hỏi quan trọng hơn là bạn nghĩ nó sẽ hữu ích cho bạn và các lập trình viên khác biết rằng b() có thể ném một loại ngoại lệ cụ thể, đặc biệt nếu đó là một trong những bạn có thể muốn bắt với khối try/catch khi gọi b(). –

Trả lời

3

@throws chú thích là để chỉ cho các nhà phát triển nếu function() có thể ném một ngoại lệ
Đầu tiên, bạn phải đặt câu hỏi: tại sao bạn không bắt ngoại trừ trong b() phương pháp, là có một lý do chính đáng vì điều đó?
Có? vì vậy bạn phải thêm @throws chú thích, nó sẽ cho biết bạn, hoặc những người khác phát triển mà sử dụng function() b() không an toàn và họ sẽ quyết định xem họ sẽ bắt hoặc tuyên truyền các ngoại lệ
Cũng, vì PHP doesn' t buộc bạn bắt ngoại lệ do hàm khác ném, chú thích @throws trở thành phải/bắt buộc thực hành

+0

Trường hợp ngoại lệ bắt mắt vì "không an toàn" là một thái độ xấu đối với trường hợp ngoại lệ. Ưu điểm của các ngoại lệ là bạn có thể cung cấp một đường dẫn mã sạch cho trường hợp thành công và cho phép chúng lan truyền lên ngăn xếp là một phần quan trọng của nó. Bạn không rõ ràng phủ nhận điều đó, nhưng câu trả lời của bạn cho thấy thái độ này (IMHO thiếu sót) đối với họ. –

1

Thực tế, b() ném ngoại lệ. Cho dù điều đó xảy ra trực tiếp hay gián tiếp thì không liên quan đến người gọi. Bây giờ, các chú thích không phải là tài liệu chi tiết thực hiện nội bộ có thể thay đổi hoặc thậm chí khác nhau với các lớp học có nguồn gốc khác nhau. Thay vào đó, chú thích ghi lại hành vi hiển thị cho người gọi, do đó, ngoại lệ hiệu quả cũng phải là một phần của chú thích.

Các vấn đề liên quan