Belgelerde belirli bir istisna türü atacağını bildiren bir arabirim yöntemi var. Bu yöntemin uygulanması, istisna oluşturan bir şey kullanır. Dahili istisna yakalanır ve arayüz sözleşmesi tarafından beyan edilen istisna atılır. İşte daha iyi açıklamak için küçük bir kod örneği. PHP ile yazılmış ama takip etmek oldukça basit.
// 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
}
Bu yöntemi soyutlamanın sızmasını önlemek için kullanıyorum.
Sorularım şunlardır: Önceki istisna olarak atılan iç istisnayı geçmek soyutlamayı sızdırıyor mu? Değilse, bir önceki istisnanın mesajını tekrar kullanmak uygun olur mu? Eğer soyutlamayı sızdıracaksa, neden düşündüğüne dair bir rehberlik sağlayabilir misiniz?
Sadece açıklığa kavuşturmak gerekirse, sorum şu kod satırına geçmeyi içerecekti
throw new DoohickeyDisasterException($Exc->getMessage(), null, $Exc);
file_not_found
atmalıdırfile_not_found_exception
. İstisnalar gerektiğini değil kütüphane spesifik olun.