亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

php語言 百分網(wǎng)手機(jī)站

PHP7系列之異常處理

時(shí)間:2020-11-13 17:18:48 php語言 我要投稿

PHP7系列之異常處理

  在PHP中碰到異常的時(shí)候我們應(yīng)該怎么處理呢?以下是百分網(wǎng)小編精心為大家整理的PHP7系列之異常處理,希望對(duì)大家處理編程異常有所幫助!就跟隨百分網(wǎng)小編一起去了解下吧,想了解更多相關(guān)信息請(qǐng)持續(xù)關(guān)注我們應(yīng)屆畢業(yè)生考試網(wǎng)!
  PHP5中的異常處理
  在PHP5中異;蛘哒f錯(cuò)誤被分為不同的等級(jí)
  1. 語法錯(cuò)誤級(jí)別,也就是經(jīng)?吹降腜arse Error,這種錯(cuò)誤,會(huì)在Zend引擎進(jìn)行語法分析和編譯的時(shí)候就提示錯(cuò)誤,注意這種錯(cuò)誤一般都是比較低級(jí)的手寫錯(cuò)誤,或者是關(guān)鍵詞寫錯(cuò),或者是少些一些分號(hào)等。對(duì)于這類錯(cuò)誤,一般設(shè)置error_reporting(E_ALL)或者ini_set('display_errors','on'),在發(fā)生錯(cuò)誤的時(shí)候,就會(huì)拋出異常,通過追蹤異常堆棧就可以發(fā)現(xiàn)問題所在
  2. Fatal Error錯(cuò)誤,這種錯(cuò)誤一般會(huì)導(dǎo)致PHP進(jìn)程直接退出,也就是導(dǎo)致場(chǎng)景的.白屏現(xiàn)象或者webserver返回500。這種錯(cuò)誤是不能捕獲的,無法通過try...catch或者其他手段進(jìn)行處理。(PHP7在這一塊做了比較明顯的升級(jí),方便我們更好的處理部分異常,詳見后文分析)
  3. 正常的Exception。對(duì)于Exception我們常見的處理方式有兩種,一種是用try...catch語句。
  PHP7系列之-異常處理
  另一種的寫法常見于MVC框架,就是調(diào)用鉤子函數(shù),在作者寫的Pfinal MVC框架中就用了這種方法,可以做到全局處理異常,當(dāng)有未捕獲的異常的時(shí)候,使用鉤子函數(shù)注冊(cè)的處理函數(shù)進(jìn)行處理,不至于會(huì)把異常堆棧丟給用戶,這是PHP5中高級(jí)一點(diǎn)的異常處理方法。以下是作者的Pfinal框架中的異常處理核心文件
  PHP7系列之-異常處理
  PHP7中的異常處理升級(jí)
  PHP7的改動(dòng)中,影響比較大的,包括異常處理。PHP7實(shí)現(xiàn)了一個(gè)全局的throwable接口,原來的Exception和部分Error都實(shí)現(xiàn)了這個(gè)接口(interface), 以接口的方式定義了異常的繼承結(jié)構(gòu)。于是,PHP7中更多的Error變?yōu)榭刹东@的Exception返回給開發(fā)者,如果不進(jìn)行捕獲則為Error,如果捕獲就變?yōu)橐粋(gè)可在程序內(nèi)處理的Exception。這些可被捕獲的Error通常都是不會(huì)對(duì)程序造成致命傷害的Error,例如函數(shù)不存。
  PHP7中,基于/Error exception,派生了5個(gè)新的engine exception:ArithmeticError / AssertionError / DivisionByZeroError / ParseError / TypeError。在PHP 7里,無論是老的/Exception還是新的/Error,它們都實(shí)現(xiàn)了一個(gè)共同的interface: /Throwable。
  對(duì)比原來的PHP5,
  處理語法錯(cuò)誤Parse Error,針對(duì)于語法錯(cuò)誤,原來的PHP5是遇到語法錯(cuò)誤,就會(huì)終止PHP進(jìn)程,同時(shí)拋出語法錯(cuò)誤的提示。在新的PHP7中,這種異常類型被封裝為ParseError異常類,你可以在代碼中通過try...catch(ParseError $e){}來處理,媽媽在也不用擔(dān)心我少寫一個(gè)分號(hào)會(huì)導(dǎo)致系統(tǒng)直接奔潰了
  處理Fatal Error,例如以下代碼函數(shù)參數(shù)定義是classInstanceA的類型,但是實(shí)際調(diào)用的時(shí)候傳入了classInstanceB的類型,在PHP5中,會(huì)觸發(fā)一個(gè)Fatal Error,導(dǎo)致進(jìn)程終止運(yùn)行。
  PHP7系列之-異常處理
  現(xiàn)在在PHP7中,可以通過捕獲異常,處理以上錯(cuò)誤,不會(huì)拋出Fatal Error
  PHP7系列之-異常處理

【PHP7系列之異常處理】相關(guān)文章:

1.PHP7系列中的異常處理

2.Java 異常處理

3.Java異常處理語句及解析

4.Linux處理Tomcat異常的方法步驟

5.Linux新手系列之五

6.Java的異常機(jī)制分析及處理辦法

7.PHP異常處理定義與使用方法

8.全面理解java中的異常處理機(jī)制精選

9.php7優(yōu)化提升技巧