설명서에 특정 유형의 예외가 발생한다는 인터페이스 방법이 있습니다. 해당 메소드의 구현은 예외를 발생시키는 것을 사용합니다. 내부 예외가 발생하고 인터페이스 계약에 의해 선언 된 예외가 발생합니다. 다음은 더 나은 설명을위한 작은 코드 예제입니다. PHP로 작성되었지만 따르기가 매우 쉽습니다.
// 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
}
추상화가 누출되는 것을 막기 위해이 방법을 사용하고 있습니다.
내 질문은 : 이전 예외로 던져진 내부 예외를 전달하여 추상화를 유출합니까? 그렇지 않다면 이전 예외 메시지를 단순히 재사용하는 것이 적합합니까? 그것이 추상화를 누설한다면 왜 그렇게 생각하는지에 대한 지침을 제공 할 수 있습니까?
명확히하기 위해 내 질문에는 다음 코드 줄로 변경하는 것이 포함됩니다.
throw new DoohickeyDisasterException($Exc->getMessage(), null, $Exc);
file_not_found
을 던져야합니다file_not_found_exception
. 예외가해야 하지 라이브러리 구체적으로.