一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 基于PHP7錯誤處理與異常處理方法(詳解)

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

2019-10-26 15:43D_G_H PHP教程

下面小編就為大家分享一篇基于PHP7錯誤處理與異常處理方法(詳解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

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 層次結構
  1. Throwable 
  2. Error 
  3.   ArithmeticError 
  4.    DivisionByZeroError 
  5.   AssertionError 
  6.   ParseError 
  7.   TypeError 
  8. Exception 
  9.   ... 


 

  1. try 
  2. // Code that may throw an Exception or Error. 
  3. catch (Throwable $t) 
  4. // Executed only in PHP 7, will not match in PHP 5 
  5. catch (Exception $e) 
  6. // Executed only in PHP 5, will not be reached in PHP 7 
  7. up 
  8. down 
  9. lubaev dot ka at gmail dot com ¶ 
  10. 11 months ago 
  11. php 7.1 
  12. try { 
  13. // Code that may throw an Exception or ArithmeticError. 
  14. catch (ArithmeticError | Exception $e) { 
  15. // pass 



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

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

Example #1 內置的異常處理類

  1. <?php 
  2. class Exception 
  3. protected $message = 'Unknown exception'// 異常信息 
  4. private $string;       // __toString cache 
  5. protected $code = 0;      // 用戶自定義異常代碼 
  6. protected $file;       // 發生異常的文件名 
  7. protected $line;       // 發生異常的代碼行號 
  8. private $trace;       // backtrace 
  9. private $previous;      // previous exception if nested exception 
  10. public function __construct($message = null, $code = 0, Exception $previous = null); 
  11. final private function __clone();   // Inhibits cloning of exceptions. 
  12. final public function getMessage();  // 返回異常信息 
  13. final public function getCode();   // 返回異常代碼 
  14. final public function getFile();   // 返回發生異常的文件名 
  15. final public function getLine();   // 返回發生異常的代碼行號 
  16. final public function getTrace();   // backtrace() 數組 
  17. final public function getPrevious();  // 之前的 exception 
  18. final public function getTraceAsString(); // 已格成化成字符串的 getTrace() 信息 
  19. // Overrideable 
  20. public function __toString();    // 可輸出的字符串 
  21. ?> 


如果使用自定義的類來擴展內置異常處理類,并且要重新定義構造函數的話,建議同時調用 parent::__construct() 來檢查所有的變量是否已被賦值。當對象要輸出字符串的時候,可以重載 __toString() 并自定義輸出的樣式。
Note:
Exception 對象不能被復制。嘗試對 Exception 對象復制 會導致一個 E_ERROR 級別的錯誤。
  1. <?php 
  2. /** 
  3. * 自定義一個異常處理類 
  4. */ 
  5. class MyException extends Exception 
  6. // 重定義構造器使 message 變為必須被指定的屬性 
  7. public function __construct($message, $code = 0, Exception $previous = null) { 
  8.   // 自定義的代碼 
  9.   // 確保所有變量都被正確賦值 
  10.   parent::__construct($message, $code, $previous); 
  11. // 自定義字符串輸出的樣式 
  12. public function __toString() { 
  13.   return __CLASS__ . ": [{$this->code}]: {$this->message}\n"
  14. public function customFunction() { 
  15.   echo "A custom function for this type of exception\n"
  16.  
  17. /** 
  18. * 創建一個用于測試異常處理機制的類 
  19. */ 
  20. class TestException 
  21. public $var
  22. const THROW_NONE = 0; 
  23. const THROW_CUSTOM = 1; 
  24. const THROW_DEFAULT = 2; 
  25. function __construct($avalue = self::THROW_NONE) { 
  26.   switch ($avalue) { 
  27.    case self::THROW_CUSTOM: 
  28.     // 拋出自定義異常 
  29.     throw new MyException('1 is an invalid parameter', 5); 
  30.     break
  31.    case self::THROW_DEFAULT: 
  32.     // 拋出默認的異常 
  33.     throw new Exception('2 is not allowed as a parameter', 6); 
  34.     break
  35.    default
  36.     // 沒有異常的情況下,創建一個對象 
  37.     $this->var = $avalue; 
  38.     break
  39.   } 


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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产情侣偷国语对白 | 高跟翘臀老师后进式视频 | 奇米7777第四色 | 亚洲天堂2015| 调教扩张宫颈女人惨叫 | 蛮荒的童话未删减在线观看 | 国产第7页 | 色综合久久综合网欧美综合网 | 婷婷综合久久中文字幕 | 爱情岛论坛亚洲自拍 | 紧身裙女教师miad711在线 | 果冻传媒新在线观看免费 | 趴好撅高打屁股sp调教h | 免费老外的毛片清高 | 1769亚洲欧美资源站 | 国产成人一区二区三区 | 久久久无码精品无码国产人妻丝瓜 | 性欧美黑人巨大喷潮xxoo | 高清欧美不卡一区二区三区 | 男女被爆动漫羞羞动漫 | 欧美洲大黑香蕉在线视频 | 欧美精品一区二区三区免费观看 | 星星动漫在线观看免费 | 国产中文在线视频 | 天天操天天爽天天射 | 亚洲欧美综合区自拍另类 | 亚洲国产精品久久人人爱 | 亚洲激情网站 | 国产成人无精品久久久久国语 | 免费一级特黄特色大片在线观看 | 香蕉久久网| 精品国产国偷自产在线观看 | 极品在线 | 国产第一自拍 | 娇女的呻吟亲女禁忌h16 | 亚洲 日本 天堂 国产 在线 | 欧美色成人tv在线播放 | 我的漂亮朋友在线观看全集免费 | 四虎成人免费 | 色婷婷久 | 亚洲福利一区二区三区 |