簡體   English   中英

在PHP中捕獲異常語法錯誤

[英]Catching Exceptions Syntax Error in PHP

我正在嘗試使用PHP中的異常來避免多個if-then-else塊。 但是,當我嘗試捕獲異常時, Parse error: syntax error, unexpected T_CATCH in /directory/functions.php on line 66收到錯誤Parse error: syntax error, unexpected T_CATCH in /directory/functions.php on line 66 我的投擲和接發動作有問題嗎?

function doThis($sSchool, $sDivision, $sClass, $sUsername, $sCode,$query1,$query2) 
    {
        connectDb();
        global $dbConnection;

        $sDivisionIdArray = mysqli_query($dbConnection,$query1);
        if ($sDivisionIdArray==false){throw new Exception ();}


        $sDisplayQueryArray = mysqli_query($dbConnection,$query2);
        if ($sDisplayQueryArray==false){throw new Exception ();}

    catch (Exception $e) // This is line 666
        {echo ('Sorry, an error was encountered.');}
    }

您忘記了try語句。

function doThis($sSchool, $sDivision, $sClass, $sUsername, $sCode,$query1,$query2) 
{
    try
    {
       connectDb();
       global $dbConnection;

       $sDivisionIdArray = mysqli_query($dbConnection,$query1);
        if ($sDivisionIdArray==false){throw new Exception ();}


       $sDisplayQueryArray = mysqli_query($dbConnection,$query2);
       if ($sDisplayQueryArray==false){throw new Exception ();}
    }
    catch (Exception $e) // This is line 666
    {echo ('Sorry, an error was encountered.');}
}

為了增加您對PHP異常的了解,您還可以在引發的異常中傳遞消息,這些消息可以捕獲和存儲(如果您選擇的話)。

function doThis($sSchool, $sDivision, $sClass, $sUsername, $sCode,$query1,$query2) 
{
    try
    {
       connectDb();
       global $dbConnection;

       $sDivisionIdArray = mysqli_query($dbConnection,$query1);
       if ($sDivisionIdArray == false)
           throw new Exception ('Query 1 failed');


       $sDisplayQueryArray = mysqli_query($dbConnection,$query2);
       if ($sDisplayQueryArray == false)
           throw new Exception('Query 2 failed');
    } catch (Exception $e) {
        echo ($e->getMessage());
    }
}

如果未能在引發的異常周圍包含try / catch塊,則可以選擇在代碼中包括默認異常處理程序,該處理程序將捕獲使用set_exception_handler引發的所有異常。 這可以用於標准化404/500錯誤頁面,還可以適當地處理錯誤並將可能的錯誤記錄到文件中。

其他答案指出了缺少try塊的情況。 我只想提到使用異常進行流控制並不總是一個好主意。 除了概念上的問題(異常應該表明發生了不尋常的事情必須處理,而不是充當榮耀的goto)之外,使用異常的效率可能較低

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM