Разделять или не отделять попробуйте … ловить блоки (лучшая практика)

Лучше ли разделять разные блоки try catch или я могу сгруппировать серию вызовов классов в один блок? В настоящее время я настроен на запуск с одним блоком и не получаю ошибок. Я прошу в основном для удобочитаемости и проверки будущего.

например, несколько блоков:

    /**  KERNEL AUTOLOAD
* = check system setup and load autoloader, bootstrap, and magma config  */
try {
/** AutoLoad Kernel */
if (!require_once($paths['root']
. '/' . $paths['framework']
. '/' . '/kernel/core/KernelLoader.php')) {
throw new Exception('Error - AutoLoader is missing');
}
$kernel_loader = new KernelLoader($paths);
} catch (Exception $e) {
echo
'<p><b>EXCEPTION</b><br />Message: '
. $e->getMessage()
. '<br />File: '
. $e->getFile()
. '<br />Line: '
. $e->getLine()
. '</p>';
}

/**  KERNEL BOOTSTRAP
* = check system setup and load autoloader, bootstrap, and magma config  */
try {
/** BootStrap */
if (!$kernel = new BootStrap($paths)) {
throw new Exception('Error - BootStrap is missing');
}
} catch (Exception $e) {
echo
'<p><b>EXCEPTION</b><br />Message: '
. $e->getMessage()
. '<br />File: '
. $e->getFile()
. '<br />Line: '
. $e->getLine()
. '</p>';
}

/**  APP SETUP
* = initialize the app */
try {
/** StartPage */
if (!$app = new StartPage($kernel)) {
throw new Exception('Error - App StartPage is missing');
}
} catch (Exception $e) {
echo
'<p><b>EXCEPTION</b><br />Message: '
. $e->getMessage()
. '<br />File: '
. $e->getFile()
. '<br />Line: '
. $e->getLine()
. '</p>';
}

Или один блок захвата:

/**  KERNEL AUTOLOAD
* = check system setup and load autoloader, bootstrap, and magma config  */
try {
/** AutoLoad Kernel */
if (!require_once($paths['root']
. '/' . $paths['framework']
. '/' . '/kernel/core/KernelLoader.php')) {
throw new Exception('Error - AutoLoader is missing');
}
$kernel_loader = new KernelLoader($paths);

/** BootStrap */
if (!$kernel = new BootStrap($paths)) {
throw new Exception('Error - BootStrap is missing');
}

/** StartPage */
if (!$app = new StartPage($kernel)) {
throw new Exception('Error - App StartPage is missing');
}
} catch (Exception $e) {
echo
'<p><b>EXCEPTION</b><br />Message: '
. $e->getMessage()
. '<br />File: '
. $e->getFile()
. '<br />Line: '
. $e->getLine()
. '</p>';
}

1

Решение

Это семантически зависит от того, что делает блок кода и как ошибки должны обрабатываться с точки зрения выполняемой бизнес-логики. (Не так, как они должны быть пойманный, но как они должны быть обрабатываются.) Например:

  • Являются ли обе эти операции частью одной атомарной бизнес-операции? В этом случае ошибка во второй операции может потребовать отката обеих операций как части одной единицы работы. В этом случае имело бы смысл обращаться с ними вместе. (Один catch Блок.)
  • Являются ли эти атомарно отдельные и отличные операции? В этом случае ошибка во второй операции может не иметь логического курса для воздействия на первую операцию и, следовательно, должна обрабатываться отдельно. (Два catch блоки.)

Семантически разделить ваши операции на их собственные проблемы, а затем обрабатывать ошибки в этих проблемах.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]