【发布时间】:2016-04-29 00:51:18
【问题描述】:
我是 PHP 新手。当我尝试它时,我预计 $e 变量中的所有警告和错误。他们登录$e,但也在屏幕上输出。
我目前的解决方案是在$db 之前添加@,以防止屏幕上弹出警告。有更好的解决方案吗?我的感觉有点hacky。
<?php
function db() {
$db = array();
try {
@$db = new Database(array(
'type' => 'mysql',
'host' => 'localhosts',
'database' => 'megastore',
'user' => 'root',
'password' => ''
));
} catch (Exception $e) {
echo $e;
}
return $db;
}
【问题讨论】:
-
异常和错误不是一回事:try/catch 将捕获异常,而不是错误,除非您明确设置了错误处理程序来将错误转换为异常
-
您使用的是什么数据库扩展?
mysql_或mysqli_或PDO? -
v7 中的错误处理已更改:php.net/manual/en/class.throwable.php
-
@RajdeepPaul 不要全面禁止
@。示例:$result = @file_put_contents("file.txt","derp"); if( !$result) presentUsefulErrorMessage();。适当的错误处理程序绝对是个好主意,但有时您需要本地化错误处理,而没有@... 至少在 PHP7 之前是不可能的。
标签: php database exception try-catch