Domanda

Sto cercando di usare le eccezioni in PHP come modo per evitare multipli if-then-else blocchi. Tuttavia, quando provo a catturare l'eccezione, ricevo l'errore Parse error: syntax error, unexpected T_CATCH in /directory/functions.php on line 66. Sto facendo qualcosa di sbagliato nel mio lancio e catturando?

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.');}
    }
È stato utile?

Altri suggerimenti

Hai dimenticato il try dichiarazione.

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.');}
}

Per aumentare la tua conoscenza delle eccezioni PHP, puoi anche passare messaggi nel tuo lanciato eccezioni che può essere catturato e archiviato (se lo desideri).

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());
    }
}

Se non si include i blocchi di prova/cattura attorno a un'eccezione lanciata, è possibile scegliere di includere un gestore di eccezioni predefinito nel tuo codice che catturerà tutte le eccezioni lanciate utilizzando set_exception_handler. Questo può essere utilizzato per standardizzare una pagina di errore 404/500 e anche per gestire gli errori in modo appropriato e possibili registrarli a un file.

Altre risposte hanno sottolineato la mancanza di un blocco di prova. Volevo solo menzionare che l'uso delle eccezioni per il controllo del flusso non è sempre un'ottima idea. A parte la questione concettuale (le eccezioni dovrebbero segnalare che è avvenuto qualcosa di normale che deve essere affrontato, non fungere da goto glorificato), l'uso delle eccezioni può essere meno efficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top