Sam*_*Sam 5 php error-handling
在我的PHP学习过程中,我一直在尝试阅读错误报告和处理的最佳实践,但语句因人而异,我一直在努力想出一种清晰简洁的方法来处理我的应用程序中的错误.我对可能出错的事情使用异常,但在大多数情况下,我很难理解异常是否应该杀死应用程序并显示错误页面或者只是被捕获并静默处理.
似乎无法回避的事情是,有太多的报道吗?每次你调用一个函数都会出现可怕的错误,这意味着如果你要确认每一个函数调用,你将不得不用if语句填充页面,并找出其中一个失败可能产生的影响.有错误报告的简明文档或想法可以为我清除这一点吗?有最佳做法吗?良好错误处理的最佳示例是什么?
目前我做以下事情:
恕我直言,异常是您唯一不理解的事情:异常意味着超出您的控制范围,意味着从抛出它们的范围之外捕获并处理。try 块有一个特定的限制:它应该包含相关操作。以数据库 try catch 块为例:
$array = array();
try {
// connect throws exception on fail
// query throws exception on fail
// fetch results into $array
} catch (...) {
$array[0]['default'] = 'me';
$array[0]['default2'] = ...;
...
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我将每个与数据库相关的函数都放在了 try 块中。如果连接失败,则查询并且不会执行获取,因为如果没有连接,它们就没有任何意义。如果查询失败,则会跳过获取,因为获取没有结果是没有意义的。如果出现任何问题,我有一个空的 $array 需要处理:这样我就可以用默认数据填充它。
使用异常,例如:
$array = array();
try {
if (!file_exists('file.php')) throw new Exception('file does not exists');
include('file.php');
} catch (Exception $e) {
trigger_error($e->getMessage());
}
Run Code Online (Sandbox Code Playgroud)
没有意义。它只是一个更长的版本:
if (!file_exists('file.php')) trigger_error('file does not exists');
include('file.php');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
341 次 |
| 最近记录: |