PHP İstisnalar sözdizimi hatası koşturarak

4 Cevap php

Ben birden if-then-else blokları kaçınmanın bir yolu olarak PHP durumlar kullanmak çalışıyorum. Ben özel yakalamaya çalışın Ancak, ben Parse error: syntax error, unexpected T_CATCH in /directory/functions.php on line 66 hatası alıyorum. Ben benim atma ve alıcı ile yanlış bir şey yapıyorum?

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

4 Cevap

Sen try deyimi unuttu.

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 istisnalar bilginizi artırmak için ayrıca mesajlarınızı iletebilirsiniz sizin (yani seçerseniz) thrown exceptions hangi yakalanmış ve saklanabilir.

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

Eğer atılan istisna etrafında try / catch blokları dahil başarısız olursa, set_exception_handler kullanılarak atılan tüm özel durumları yakalamak olacak kod varsayılan bir istisna işleyici eklemeyi seçebilirsiniz. Bu 404/500 hata sayfası standardize etmek ve aynı zamanda uygun ve olası hataları işlemek bunları bir dosyaya giriş için kullanılabilir.

Diğer cevaplar try'ın eksikliği dikkat çekmişlerdir. Ben sadece akış kontrolü için özel durumlar kullanarak her zaman iyi bir fikir olmadığını belirtmek istedim. Kenara kavramsal sayısından, istisnalar may be less efficient kullanımını (istisnalar övmek Goto olarak hizmet değil, sıradan bir şey ele alınması gereken oldu ki sinyal olmalıdır).