夜间福利网站,免费动漫av,一级做a爰片久久毛片免费陪,夜夜骑首页,黄色毛片视频,插插插操操操,综合av色

php中try catch捕獲異常實例詳解

時間:2025-12-18 02:45:56 php語言 我要投稿

php中try catch捕獲異常實例詳解

  導語:php中try catch可以幫助我們捕獲程序代碼的異常了,這樣我們可以很好的處理一些不必要的錯誤了,下面就由小編為大家介紹一下php中try catch捕獲異常實例詳解,歡迎大家閱讀!

  PHP中try{}catch{}語句概述

  PHP5添加了類似于其它語言的異常處理模塊。在 PHP 代碼中所產生的異?杀 throw語句拋出并被 catch 語句捕獲。(注:一定要先拋才能獲。

  需要進行異常處理的代碼都必須放入 try 代碼塊內,以便捕獲可能存在的異常。

  每一個 try 至少要有一個與之對應的 catch。

  使用多個 catch可以捕獲不同的類所產生的異常。

  當 try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最后一個 catch 的后面繼續(xù)執(zhí)行。

  當然,PHP允許在 catch 代碼塊內再次拋出(throw)異常。

  當一個異常被拋出時,其后(譯者注:指拋出異常時所在的代碼塊)的代碼將不會繼續(xù)執(zhí)行,而 PHP 就會嘗試查找第一個能與之匹配的 catch。

  如果一個異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那么 PHP 將會產生一個嚴重的錯誤,并且輸出 Uncaught Exception ... (未捕獲異常)的提示信息。

  先來看一下PHP內置異常類的基本屬性和方法。(不包括具體實現(xiàn))

  復制代碼代碼如下: try{

  }

  catch(){

  throw new Exception();

  }

  catch(){

  /pic/p>

  }

  為了進一步處理異常,我們需要使用PHP中try{}catch{}----包括Try語句和至少一個的catch語句。任何調用 可能拋出異常的方法的代碼都應該使用try語句。Catch語句用來處理可能拋出的異常。以下顯示了我們處理getCommandObject()拋出的異常的方法:

  復制代碼代碼如下:try {

  $mgr = new CommandManager();

  $cmd = $mgr->getCommandObject("realcommand");

  $cmd->execute();

  } catch (Exception $e) {

  print $e->getMessage();

  exit();

  }

  ?>

  可以看到,通過結合使用throw關鍵字和PHP中try{}catch{},我們可以避免錯誤標記“污染”類方法返回的值。因為“異!北旧砭褪且环N與其它任何對象不同的PHP內建的類型,不會產生混淆。

  如果拋出了一個異常,try語句中的腳本將會停止執(zhí)行,然后馬上轉向執(zhí)行catch語句中的腳本。

  例子如下:

  包含文件錯誤拋出異常

  復制代碼代碼如下:/pic/p>

  try {

  require ('test_try_catch.php');

  } catch (Exception $e) {

  echo $e->getMessage();

  }

  /pic/p>

  try {

  if (file_exists('test_try_catch.php')) {

  require ('test_try_catch.php');

  } else {

  throw new Exception('file is not exists');

  }

  } catch (Exception $e) {

  echo $e->getMessage();

  }

  如果異常拋出了卻沒有被捕捉到,就會產生一個fatal error。

  多個catch捕獲多個異常

  PHP將查詢一個匹配的catch代碼塊。如果有多個catch代碼塊,傳遞給每一個catch代碼塊的對象必須具有不同類型,這樣PHP可以找到需要進入哪一個catch代碼塊。當try代碼塊不再拋出異常或者找不到catch能匹配所拋出的異常時,PHP代碼就會在跳轉最后一個catch的后面繼續(xù)執(zhí)行。多個異常的捕獲的示例如下:

  復制代碼代碼如下:class MyException extends Exception{

  /pic/p>

  public function __construct($message, $code=0){

  /pic/p>

  /pic/p>

  parent::__construct($message, $code);

  }

  /pic/p>

  public function __toString(){

  return __CLASS__.":[".$this->code."]:".$this->message."

  ";

  }

  /pic/p>

  public function customFunction(){

  echo "按自定義的方法處理出現(xiàn)的這個類型的異常";

  }

  }

  /pic/p>

  class TestException{

  public $var; /pic/p>

  function __construct($value=0){ /pic/p>

  switch($value){ /pic/p>

  case 1: /pic/p>

  throw new MyException("傳入的值“1”是一個無效的參數(shù)",5);break;

  case 2: /pic/p>

  throw new MyException("傳入的值“2”不允許作為一個參數(shù)",6);break;

  default: /pic/p>

  $this->var=$value;break; /pic/p>

  }

  }

  }

  /pic/p>

  try{

  $testObj =new TestException(); /pic/p>

  echo "********

  "; /pic/p>

  }catch(MyException $e){ /pic/p>

  echo "捕獲自定義的異常:$e

  "; /pic/p>

  $e->customFunction(); /pic/p>

  }catch(Exception $e){ /pic/p>

  echo "捕獲默認的異常:".$e->getMessage()."

  "; /pic/p>

  }

  var_dump($testObj); /pic/p>

  /pic/p>

  try{

  $testObj1 =new TestException(1); /pic/p>

  echo "********

  "; /pic/p>

  }catch(MyException $e){ /pic/p>

  echo "捕獲自定義的異常:$e

  ";

  $e->customFunction();

  }catch(Exception $e){ /pic/p>

  echo "捕獲默認的異常:".$e->getMessage()."

  ";

  }

  var_dump($testObj1); /pic/p>

  /pic/p>

  try{

  $testObj2 =new TestException(2); /pic/p>

  echo "********

  "; /pic/p>

  }catch(MyException $e){ /pic/p>

  echo "捕獲自定義的異常:$e

  ";

  $e->customFunction();

  }catch(Exception $e){ /pic/p>

  echo "捕獲默認的異常:".$e->getMessage()."

  ";

  }

  var_dump($testObj2); /pic/p>

  ?>

  在上面的代碼中,可以使用兩個異常處理類:一個是自定義的異常處理類MyException;另一個則是PHP中內置的異常處理類Exception。分別在try區(qū)塊中創(chuàng)建測試類TestException的對象,并根據(jù)構造方法中提供的不同數(shù)字參數(shù),拋出自定義異常類對象、內置的異常類對象和不拋出任何異常的情況,跳轉到對應的catch區(qū)塊中執(zhí)行。如果沒有異常發(fā)生,則不會進入任何一個catch塊中執(zhí)行,測試類TestException的對象創(chuàng)建成功

【php中try catch捕獲異常實例詳解】相關文章:

PHP5異常處理分析實例10-15

PHP7的異常處理詳解11-12

php多個文件及圖片上傳實例詳解01-23

php中fsockopen用法實例08-14

PHP中$-SERVER的詳解09-09

php+mysql實現(xiàn)無限分類實例詳解09-11

php自定義錯誤日志實例詳解10-21

php中return的用法實例分析09-04

PHP中數(shù)組的分組排序實例02-10

  • 相關推薦