suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php 异常处理

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?

大家讲道理大家讲道理2752 Tage vor447

Antworte allen(3)Ich werde antworten

  • PHPz

    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)

    Antwort
    0
  • 阿神

    阿神2017-05-16 13:04:45

    请分清楚警告和Exception的区别。

    PHP中的Warning和Error是PHP提醒开发者程序存在的问题,这个问题不一定要被处理
    Exception是属于应用程序中开发自定义,并且要处理的问题,原则上讲Exception是一定要有对应处理的

    Antwort
    0
  • 黄舟

    黄舟2017-05-16 13:04:45

    看看这个 http://www.cnblogs.com/water0...

    Antwort
    0
  • StornierenAntwort