分离不同的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>';
}
答案 0 :(得分:2)
这在语义上完全取决于代码块正在做什么以及如何根据正在执行的业务逻辑处理错误。 (不应该如何抓住,但应该如何处理。)例如:
catch
阻止。)catch
块。)在语义上将您的操作分离到他们自己的关注点,然后处理这些问题中的错误。