搜尋

首頁  >  問答  >  主體

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/web/public/unserialize.php on line 31

為什麼沒有執行輸出catch?

大家讲道理大家讲道理2834 天前499

全部回覆(3)我來回復

  • 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)

    回覆
    0
  • 阿神

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

    請分清楚警告和Exception的差別。

    PHP中的Warning和Error是PHP提醒開發者程式存在的問題,這個問題不一定要被處理
    Exception是屬於應用程式中開發自訂,並且要處理的問題,原則上講Exception是一定要有對應處理的

    回覆
    0
  • 黄舟

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

    看看這篇 http://www.cnblogs.com/water0...

    回覆
    0
  • 取消回覆