php的異常處理基礎方法_PHP教程

來源:互聯網
上載者:User
下面來介紹一下關於php中異常處理的方法介紹,有需要學習的異常處理的朋友可參考本教程。

以下是引用片段:

1.允許一個方法給出一個出錯標記給客戶代碼
2.提供者錯誤的詳細資料
3.讓你同時判斷多個出錯條件,將你的錯誤報表和程式處理流程分開。
4.傳回值必須是獨立的類型,不會與正常返回的類型相混淆

兩個執行個體掌握PHP異常處理

//例【1】用 try...catch

代碼如下 複製代碼
/* PDO串連mysql資料庫,如果沒看過PDO,先看下PDO的建構函式,要不跳過例1看例2 */
$dsn = 'mysql:host=localhost;dbname=testdb';
$user = 'dbuser';
$password = 'dbpass';
try {
$dbh = new PDO($dsn, $user, $password); //建立資料庫連接對象容易出現異常
echo '如果上面出現異常就不能顯示我了';
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->__toString();
}
?>

代碼如下 複製代碼
//例[2] try..cathc 和 throw一起用
try {
$error = '我拋出異常資訊,並且跳出try塊';
if(is_dir('./tests')){
echo 'do sth.';
}else{
throw new Exception($error,12345);
}
echo '上面有異常的話就輪不到我了!~
',"n";
} catch (Exception $e) {
echo '捕獲異常: ', $e->getMessage(),$e->getCode(), "n
"; //顯示$error和123456
}
echo '繼續執行';
?>

上面一個朋友說的,下面我自己來寫了點程式練習一下:

以下是程式碼片段:

代碼如下 複製代碼


$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}

http://www.bkjia.com/PHPjc/629027.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/629027.htmlTechArticle下面來介紹一下關於php中異常處理的方法介紹,有需要學習的異常處理的朋友可參考本教程。 以下是引用片段: 1.允許一個方法給出一個出...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.