Heim > Fragen und Antworten > Hauptteil
try{
echo 'try <br/>';
$mysql = new mysqli('localhost', 'root', '111', 'test');
} catch (Exception $e){
echo 'catch <br/>';
echo $e->getMessage();
}
代码如上, 出现了异常
输出结果:
try
Warning: mysqli::mysqli(): (28000/1045): Access denied for user 'root'@'localhost' (using password: YES) in /home/test/its2/webroot/public/unserialize.php on line 31
为什么没有执行输出catch?
PHPz2017-05-16 13:04:45
你需要告诉mysqli以异常的方式抛出,而不是警告。
mysqli_report(MYSQLI_REPORT_STRICT); // 加上这一行!!!
try{
echo 'try <br/>';
$mysql = new mysqli('localhost', 'root', '111', 'test');
} catch (Exception $e){
echo 'catch <br/>';
echo $e->getMessage();
}
再次访问,结果如下:
try
catch
Access denied for user 'root'@'localhost' (using password: YES)
阿神2017-05-16 13:04:45
请分清楚警告和Exception的区别。
PHP中的Warning和Error是PHP提醒开发者程序存在的问题,这个问题不一定要被处理
Exception是属于应用程序中开发自定义,并且要处理的问题,原则上讲Exception是一定要有对应处理的