我有一个带有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.ini 中进行。
更新: try/catch 嵌套在 foreach 循环内,因此当抛出异常时,它会被处理并继续执行循环中的下一次迭代,而不是终止循环。