久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

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

下面小編就為大家分享一篇基于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 層次結構

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錯誤處理與異常處理方法(詳解)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持。

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了PHP7擴展開發之hello word實現方法,結合實例形式分析了php7擴展開發的具體步驟與相關操作技巧,涉及針對php底層源碼的修改與編譯,需要的朋友可以參考下
這篇文章主要介紹了PHP7擴展開發之基于函數方式使用lib庫的方法,結合實例形式分析了PHP7中lib庫擴展的封裝與調用相關操作技巧,需要的朋友可以參考下
最近在學習中遇到了協程,發現這類文章介紹的較少,所以下面這篇文章主要給大家介紹了關于PHP7下協程的實現方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一
這篇文章主要給大家介紹了關于laravel 5異常錯誤:FatalErrorException in Handler.php line 38的解決方法,文中將解決方法介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學習學習
這篇文章主要給大家介紹了關于PHP 7.1中AES加解密方法mcrypt_module_open()替換方案的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的
對于php新老手來說,WINDOWS下PHP環境配置是一件很困難的事。phpStudy 2016都是個理想選擇,下面小編給大家分享phpStudy 2016 使用教程詳解(支持PHP7),感興趣的朋友一起看看吧
主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区 | 欧美一级在线观看 | 国产福利在线小视频 | 在线看亚洲 | 日韩在线观看中文字幕 | 亚洲国产专区 | 天天综合网天天综合 | 在线看免费的a | 午夜亚洲 | 中文av电影| 五月免费视频 | 狠狠干网站 | 国产精品一区二区三区久久 | 91精品中文字幕一区二区三区 | 日韩a在线 | 日本久久网 | 亚洲精品免费视频 | 国产精品一区网站 | 国产一区二区在线播放视频 | 亚洲一区二区三区免费观看 | 九九在线视频 | 成人在线观| 99久久精品免费看国产四区 | 日韩欧美视频网站 | 国产高清在线精品 | 天天操天天舔 | 欧洲一区二区在线 | 国产三级一区二区 | 日韩欧美国产精品综合嫩v 一区中文字幕 | 91一区二区 | 羞羞视频在线观看 | 九九热在线观看视频 | 999热视频| 亚洲成人福利在线观看 | 91精品国产91久久久久久吃药 | 在线中文av| 欧美成人h版在线观看 | 狠狠干综合视频 | 国产精品福利视频 | 国产在线一区二区三区 | 色婷婷在线视频 |