婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 基于PHP7錯誤處理與異常處理方法(詳解)

基于PHP7錯誤處理與異常處理方法(詳解)

熱門標簽:離石地圖標注 400電話申請方法收費 專業電話機器人批發商 400電話辦理福州市 長沙crm外呼系統業務 江蘇外呼電銷機器人報價 電話機器人危險嗎 深圳外呼系統收費 南寧高頻外呼回撥系統哪家好

PHP7錯誤處理

PHP 7 改變了大多數錯誤的報告方式。不同于傳統(PHP 5)的錯誤報告機制,現在大多數錯誤被作為 Error 異常拋出。

這種 Error 異常可以像 Exception 異常一樣被第一個匹配的 try / catch 塊所捕獲。如果沒有匹配的 catch 塊,則調用異常處理函數(事先通過 set_exception_handler() 注冊)進行處理。 如果尚未注冊異常處理函數,則按照傳統方式處理:被報告為一個致命錯誤(Fatal Error)。

Error 類并非繼承自 Exception 類,所以不能用 catch (Exception e)...來捕獲Error。你可以用catch(Errore) { … },或者通過注冊異常處理函數( set_exception_handler())來捕獲 Error。

Error 層次結構

Throwable
 Error
  ArithmeticError
   DivisionByZeroError
  AssertionError
  ParseError
  TypeError
 Exception
  ...
try
{
 // Code that may throw an Exception or Error.
}
catch (Throwable $t)
{
 // Executed only in PHP 7, will not match in PHP 5
}
catch (Exception $e)
{
 // Executed only in PHP 5, will not be reached in PHP 7
}
up
down
9
lubaev dot ka at gmail dot com ¶
11 months ago
php 7.1
try {
 // Code that may throw an Exception or ArithmeticError.
} catch (ArithmeticError | Exception $e) {
 // pass
}

擴展(extend) PHP內置的異常處理類

用戶可以用自定義的異常處理類來擴展PHP內置的異常處理類。以下的代碼說明了在內置的異常處理類中,哪些屬性和方法在子類中是可訪問和繼承的。

Example #1 內置的異常處理類

?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() 信息
 // Overrideable
 public function __toString();    // 可輸出的字符串
}
?>
如果使用自定義的類來擴展內置異常處理類,并且要重新定義構造函數的話,建議同時調用 parent::__construct() 來檢查所有的變量是否已被賦值。當對象要輸出字符串的時候,可以重載 __toString() 并自定義輸出的樣式。
 Note:
 Exception 對象不能被復制。嘗試對 Exception 對象復制 會導致一個 E_ERROR 級別的錯誤。 
?php
/**
 * 自定義一個異常處理類
 */
class MyException extends Exception
{
 // 重定義構造器使 message 變為必須被指定的屬性
 public function __construct($message, $code = 0, Exception $previous = null) {
  // 自定義的代碼
  // 確保所有變量都被正確賦值
  parent::__construct($message, $code, $previous);
 }
 // 自定義字符串輸出的樣式
 public function __toString() {
  return __CLASS__ . ": [{$this->code}]: {$this->message}\n";
 }
 public function customFunction() {
  echo "A custom function for this type of exception\n";
 }
}

/**
 * 創建一個用于測試異常處理機制的類
 */
class TestException
{
 public $var;
 const THROW_NONE = 0;
 const THROW_CUSTOM = 1;
 const THROW_DEFAULT = 2;
 function __construct($avalue = self::THROW_NONE) {
  switch ($avalue) {
   case self::THROW_CUSTOM:
    // 拋出自定義異常
    throw new MyException('1 is an invalid parameter', 5);
    break;
   case self::THROW_DEFAULT:
    // 拋出默認的異常
    throw new Exception('2 is not allowed as a parameter', 6);
    break;
   default: 
    // 沒有異常的情況下,創建一個對象
    $this->var = $avalue;
    break;
  }
 }
}

以上這篇基于PHP7錯誤處理與異常處理方法(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 解決thinkphp5未定義變量會拋出異常,頁面錯誤,請稍后再試的問題
  • php異常處理捕獲錯誤整理
  • laravel 5異常錯誤:FatalErrorException in Handler.php line 38的解決
  • PHP中常見的錯誤與異常處理總結大全
  • php中的異常和錯誤淺析
  • 淺談PHP中的錯誤處理和異常處理
  • PHP錯誤和異常處理功能模塊示例
  • PHP中錯誤與異常的日志記錄用法分析
  • PHP中的錯誤及其處理機制

標簽:南昌 濱州 南京 曲靖 太原 白酒營銷 興安盟 株洲

巨人網絡通訊聲明:本文標題《基于PHP7錯誤處理與異常處理方法(詳解)》,本文關鍵詞  基于,PHP7,錯誤,處理,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于PHP7錯誤處理與異常處理方法(詳解)》相關的同類信息!
  • 本頁收集關于基于PHP7錯誤處理與異常處理方法(詳解)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 西青区| 宜城市| 合肥市| 江口县| 姚安县| 章丘市| 江北区| 特克斯县| 柏乡县| 曲靖市| 英德市| 太白县| 济宁市| 桃园县| 漠河县| 静宁县| 金乡县| 丹东市| 信宜市| 司法| 哈尔滨市| 延川县| 宝坻区| 大城县| 昌图县| 时尚| 普宁市| 黎川县| 固阳县| 洪湖市| 诸城市| 绥德县| 兴业县| 彭州市| 普兰店市| 济南市| 共和县| 泰兴市| 镇平县| 西吉县| 霍州市|