Tôi có một phương thức giao diện ghi rõ trong tài liệu, nó sẽ đưa ra một loại ngoại lệ cụ thể. Việc thực hiện phương pháp đó sử dụng một cái gì đó ném một ngoại lệ. Ngoại lệ nội bộ được bắt và ngoại lệ được khai báo bởi hợp đồng giao diện được đưa ra. Đây là một ví dụ mã nhỏ để giải thích rõ hơn. Nó được viết bằng PHP nhưng khá đơn giản để làm theo.
// in the interface
/**
* @return This method returns a doohickey to use when you need to foo
* @throws DoohickeyDisasterException
*/
public function getThatDoohickey();
// in the implementation
public function getThatDoohickey() {
try {
$SomethingInTheClass->doSomethingThatThrowsAnException();
} catch (Exception $Exc) {
throw new DoohickeyDisasterException('Message about doohickey failure');
}
// other code may return the doohickey
}
Tôi đang sử dụng phương pháp này trong một nỗ lực để ngăn chặn sự trừu tượng bị rò rỉ.
Câu hỏi của tôi là: Liệu việc vượt qua ngoại lệ bị ném như ngoại lệ trước đó có bị rò rỉ sự trừu tượng không? Nếu không, nó có phù hợp để sử dụng lại thông điệp của ngoại lệ trước đó không? Nếu nó bị rò rỉ thì sự trừu tượng, bạn có thể cung cấp một số hướng dẫn về lý do tại sao bạn nghĩ nó không?
Chỉ cần làm rõ, câu hỏi của tôi sẽ liên quan đến việc thay đổi dòng mã sau đây
throw new DoohickeyDisasterException($Exc->getMessage(), null, $Exc);
file_not_found
, thì nó nên ném afile_not_found_exception
. Ngoại lệ không nên là thư viện cụ thể.