91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

基于PHP7錯誤處理與異常處理的示例分析

發布時間:2021-07-12 14:47:28 來源:億速云 閱讀:142 作者:小新 欄目:開發技術

這篇文章主要介紹基于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錯誤處理與異常處理的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

方城县| 锡林郭勒盟| 广南县| 河西区| 巴林右旗| 余江县| 进贤县| 灯塔市| 辽源市| 宾阳县| 阿荣旗| 黄平县| 克东县| 瓮安县| 合阳县| 屏东县| 建平县| 淮安市| 广水市| 邓州市| 平乐县| 肇庆市| 冕宁县| 安康市| 巴中市| 望城县| 威信县| 苍溪县| 宁强县| 南开区| 柳林县| 承德市| 江华| 达孜县| 咸宁市| 霍山县| 临西县| 塔城市| 枞阳县| 绥德县| 长沙市|