Exceptionを吐くことのあるメソッドを使う場合は、呼び出し元ですべてtry catchしないといけないと思っていたが、そんなことしなくていいみたい。
綺麗に直したバージョン
実行結果
error
コード
try {
Hoge::hoge_func();
} catch (Exception $e) {
print $e->getMessage();
}
class Hoge{
public static function hoge_func(){
Fuga::fuga_func();
}
}
class Fuga{
public static function fuga_func(){
throw new Exception("error");
}
}
冗長に書いてしまっていたバージョン
実行結果は同じですが、無意味にhoge_funcの中でtry catchしてました。
error
try {
Hoge::hoge_func();
} catch (Exception $e) {
print $e->getMessage();
}
class Hoge{
public static function hoge_func(){
try {
Fuga::fuga_func();
} catch (Exception $e) {
throw $e;
}
}
}
class Fuga{
public static function fuga_func(){
throw new Exception("error");
}
}