次のような既存の構造を持つmethodAのクラスがあります
function methodA() {
$providers = $this->getFirstSetOfProviders();
foreach ($providers as $provider) {
try {
$this->method1($provider);
} catch ( Exception $e ) {
// exception handling
}
}
$providers = $this->getSecondSetOfProviders();
foreach ($providers as $provider) {
try {
$this->method2($provider);
} catch ( Exception $e ) {
// exception handling
}
}
}
catch句の内容は同じです。foreachループにネストされたtry/catchの構造を繰り返さないようにコードを整理する方法はありますか?概念的に、私はやろうとしています
function methodA() {
foreach ($providers as $provider) {
$method1 = function($provider) {
$this->method1($provider);
}
$this->withTryCatch($method1);
}
...
}
function withTryCatch($method) {
try {
$method; // invoke this method somehow
} catch (Exception $e) {
// exception handling
}
}
これはコードサンドイッチに似ていますが、phpでどのように進めるかわかりません。
更新:try / catchはforeachループ内にネストされているため、例外がスローされると、例外が処理され、ループを終了するのではなく、ループ内の次の反復に実行が続行されます。