以下是引用片段:
1.允許一個方法給出一個出錯標記給客戶代碼
2.提供程序錯誤的詳細信息
3.讓你同時判斷多個出錯條件,將你的錯誤報告和程序處理流程分開。
4.返回值必須是獨立的類型,不會與正常返回的類型相混淆
兩個實例掌握PHP異常處理
//例【1】用 try...catch
代碼如下 復制代碼 /* PDO連接mysql數據庫,如果沒看過PDO,先看下PDO的構造函數,要不跳過例1看例2 */例
代碼如下 復制代碼 <?php上面一個朋友說的,下面我自己來寫了點程序練習一下:
以下是代碼片段:
代碼如下 復制代碼
$a = 20;
// 使用常規catch的例子
try
{
if($a == 1)
{
throw new Exception("I am 1", 1);
}
elseif ($a == 2)
{
throw new Exception("I am 2", 3);
}
elseif ($a == 3)
{
throw new Exception("I am 3", 3);
}
elseif ($a == 4)
{
throw new Exception("I am 4", 4);
}
else
{
throw new Exception("Who am I ?", 0);
}
}
catch (Exception $e)
{
if($e->getCode() == 1)
{
echo "1 : ".$e;
}
elseif ($e->getCode() == 2)
{
echo "2 : ".$e;
}
elseif ($e->getCode() == 3)
{
echo "3 : ".$e;
}
elseif ($e->getCode() == 4)
{
echo "4 : ".$e;
}
else
{
echo "0 : ".$e;
}
}
echo "
--------------------------------------------------------------------------------
";
// 使用不同的擴展異常類的例子
class A extends Exception{};
class B extends Exception{};
try
{
if($a == 1)
{
throw new A("I am A", 1);
}
elseif ($a == 2)
{
throw new B("I am B", 2);
}
else
{
throw new Exception("Who am I ?", 0);
}
}
catch (A $e)
{
echo "1 : ".$e;
}
catch (B $e)
{
echo "2 : ".$e;
}
catch (Exception $e)
{
echo "0 : ".$e;
}
?>
輸出如下:
以下是引用片段:
0 : exception 'Exception' with message 'Who am I ?' in D:WebPHPWWWnewtest.php:24 Stack trace: #0 {main}
--------------------------------------------------------------------------------
0 : exception 'Exception' with message 'Who am I ?' in D:WebPHPWWWnewtest.php:69 Stack trace: #0 {main}