程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php異常處理,php異常捕獲

php異常處理,php異常捕獲

編輯:關於PHP編程

php異常處理,php異常捕獲


使用try{thow}catch(){}異常處理結構,可以有效的控制多行可能發生異常的代碼,基本模型如下:

<?php
try
{
throw new Exception("錯誤信息";) //拋出一個錯誤
}     
catch(Exception $e)  //捕獲錯誤信息,Exception是一個內置的錯誤處理類
{
echo $e->getMessage(); //輸出錯誤信息
echo $e->getCode(); //返回異常代碼
echo $e->getFile(); //返回發生異常的文件
echo $e->getLine(); //返回發生異常的行號
}

?>

Exception原形:

<?php
class Exception
{
    protected $message = 'Unknown exception';   // 異常信息
    private   $string;                          // __toString cache
    protected $code = 0;                        // 用戶自定義異常代碼
    protected $file;                            // 發生異常的文件名
    protected $line;                            // 發生異常的代碼行號
    private   $trace;                           // backtrace
    private   $previous;                        // previous exception if nested exception

    public function __construct($message = null, $code = 0, Exception $previous = null);

    final private function __clone();           // Inhibits cloning of exceptions.

    final public  function getMessage();        // 返回異常信息
    final public  function getCode();           // 返回異常代碼
    final public  function getFile();           // 返回發生異常的文件名
    final public  function getLine();           // 返回發生異常的代碼行號
    final public  function getTrace();          // backtrace() 數組
    final public  function getPrevious();       // 之前的 exception
    final public  function getTraceAsString();  // 已格成化成字符串的 getTrace() 信息

    public function __toString();               // 可輸出的字符串
}
?> 

 同時,一個try也可以關聯多個catch塊,可以自定義類繼承Exception類來實現

<?php
  class myException1 extends Exception{}  //根據需要自定義
  class myException2 extends Exception{}
  class myException3 extends Exception{}
  try{
    switch(1){
      case 1:throw new myException1();
      case 2:throw new myException2();
      case 3:throw new myException3(); //當找不到對應的catch代碼塊時,將會拋到Exception處理,因為myException3繼承了Exception
    }
  }
  catch(myException1 $e){
    echo "自定義錯誤1";
  }
  catch(myException2 $e){
    echo "自定義錯誤2";
  }
  catch(Exception $e){
    echo "原始異常類"; 
  }
?>

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved