[英]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.