これが一般的な慣行であるかどうかを知りたかっただけです。基本的に、コンストラクターは、失敗時にスローされるいくつかの初期化関数を呼び出しています。私の考えでは、実際の出力が送信されている場所であるため、オブジェクトが作成されている場所に例外を再スローすることは理にかなっています。
これは、この種の状況の「ベストプラクティス」ですか? または、これを行うためのより標準的な方法はありますか?
<?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
}
?>