이것이 일반적인 관행인지 알고 싶었습니다. 기본적으로 생성자는 실패시에 던지는 초기화 함수를 호출합니다. 내 생각은 실제 출력이 전송되는 곳이기 때문에 객체가 생성되는 곳으로 예외를 바로 되돌려 놓는 것이 의미가 있습니다.PHP가 생성자에서 예외를 다시 발생시킵니다.
이런 상황에서 "권장 사항"이 있습니까? 아니면 이것을하기위한 더 표준적인 방법이 있습니까?
<?php
class a {
private $x;
private $y;
function __construct($filename) {
try {
$this->x = $this->functionThatMightThrowException($filename);
$this->y = $this->doSomethingElseThatMightThrow();
}
catch(InvalidArgumentException $e) {
throw $e; //is this a good practice or not???
}
catch(Exception $e) {
throw $e; //again
}
}
//rest of class definition
}
// then somewhere else where the object is created and output is being sent
$fn = "blah.txt";
try {
$a = new a($fn);
}
catch (InvalidArgumentException $e) {
//actually handle here -- send error message back etc
}
catch (Exception $e) {
//etc
}
?>
왜 처음에 다시 잡으려고할까요? – PeeHaa
저는 이것이 불필요하다고 말하고 싶습니다. 걱정마. 그들을 다시 던질 필요가없는 uncatched 통해 그들을 보자. – hakre
특정 예외를 포착하지 않으면 실행 체인을 다시 트릭합니다. 동일한 예외를 포착하고 다시 던지는 것은 일반적으로 무의미합니다. 일반적으로 당신은 오직 당신이 실제로 처리하고 싶어하는 것을 잡아서 나머지는 다른 곳에서 다루기 위해 위층으로 흘려 보내 게합니다. 그것은 뷔페와 같습니다. 무언가를 먹고 싶지 않다면, 그것을 접시에 두지 마십시오. –