溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php中怎么處理錯(cuò)誤異常

發(fā)布時(shí)間:2021-07-24 17:09:43 來源:億速云 閱讀:85 作者:Leah 欄目:編程語言

php中怎么處理錯(cuò)誤異常,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

  php中的錯(cuò)誤異常怎么處理

  每一個(gè)try至少要有一個(gè)與之對應(yīng)的catch.使用多個(gè)catch可以捕獲不同的類所產(chǎn)生的異常.當(dāng)try代碼塊不再拋出異?;蛘哒也坏絚atch能匹配所拋出的異常時(shí),PHP代碼就會在跳轉(zhuǎn)到最后一個(gè)catch的后面繼續(xù)執(zhí)行.當(dāng)然,PHP允許在catch代碼塊內(nèi)再次拋出(throw)異常.當(dāng)一個(gè)異常被拋出時(shí),其后(譯者注:指拋出異常時(shí)所在的代碼塊)的代碼將不會繼續(xù)執(zhí)行,而PHP就會嘗試查找第一個(gè)能與之匹配的catch.如果一個(gè)異常沒有被捕獲,而且又沒用使用set_exception_handler()作相應(yīng)的處理的話,那么PHP將會產(chǎn)生一個(gè)嚴(yán)重的錯(cuò)誤,并且輸出UncaughtException...(未捕獲異常)的提示信息.

  /**

  *Exception.php

  *PHP5內(nèi)置的異常類的屬性與方法

  *以下這段代碼只為說明內(nèi)置異常處理類的結(jié)構(gòu),它并不是一段有實(shí)際意義的可用代碼.

  */

  classException{

  protected$message='Unknownexception';//異常信息

  protected$code=0;//用戶自定義異常代碼

  protected$file;//發(fā)生異常的文件名

  protected$line;//發(fā)生異常的代碼行號

  function__construct($message=null,$code=0);

  finalfunctiongetMessage();//返回異常信息

  finalfunctiongetCode();//返回異常代碼(代號)

  finalfunctiongetFile();//返回發(fā)生異常的文件名

  finalfunctiongetLine();//返回發(fā)生異常的代碼行號

  finalfunctiongetTrace();//backtrace()數(shù)組

  finalfunctiongetTraceAsString();//已格成化成字符串的getTrace()信息

  //可重載的方法

  function__toString();//可輸出的字符串

  }

  ?>

  /**

  *syntax.php

  */

  //語法結(jié)構(gòu)以及分析

  //PHP有兩種拋出異常的格式,如下

  //【1】try...catch...

  try{

  //實(shí)行可能有異常的操作,比如數(shù)據(jù)庫錯(cuò)作,文件錯(cuò)作

  }catch(Exception$e){

  //打印錯(cuò)誤信息

  }

  //【2】throw

  php中的錯(cuò)誤異常怎么處理

  $message=‘我必須被運(yùn)行在try{}塊中****現(xiàn)異常的話我($message)將被返回(傳遞)給catch()里的異常對象的實(shí)例比如上面的$e';

  $code=123;//錯(cuò)誤代碼號,可在catch塊中用$e->getCode();返回我的值123,這樣我就可以自定義錯(cuò)誤代碼號

  thrownewException($message,$code);

  //學(xué)JAVA的注意,PHP異常處理沒有throws

  ?>

  /**

  *Example.php

  */

  //兩個(gè)實(shí)例掌握PHP異常處理

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

  /*PDO連接mysql數(shù)據(jù)庫,如果沒看過PDO,先看下PDO的構(gòu)造函數(shù),要不跳過例1看例2*/

  $dsn='mysql:host=localhost;dbname=testdb';

  $user='dbuser';

  $password='dbpass';

  try{

  $dbh=newPDO($dsn,$user,$password);//創(chuàng)建數(shù)據(jù)庫連接對象容易出現(xiàn)異常

  echo’如果上面出現(xiàn)異常就不能顯示我了‘;

  }catch(PDOException$e){

  echo'Connectionfailed:'.$e->__toString();

  }

  ?>

  //例[2]try..cathc和throw一起用

  try{

  $error=’我拋出異常信息,并且跳出try塊‘;

  if(is_dir('./tests')){

  echo'dosth.';

  }else{

  thrownewException($error,12345);

  }

  echo’上面有異常的話就輪不到我了!~
',“\n”;

  }catch(Exception$e){

  echo‘捕獲異常:',$e->getMessage(),$e->getCode(),“\n
”;//顯示$error和123456

  }

  echo’繼續(xù)執(zhí)行‘;

  ?>

看完上述內(nèi)容,你們掌握php中怎么處理錯(cuò)誤異常的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI