站長資訊網
最全最豐富的資訊網站

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

在之前的文章中給大家帶來了《帶你一起了解PHP的錯誤類型和錯誤級別》,其中詳細介紹了PHP中的錯誤類型和錯誤級別,本篇文章我們一起來看一下,在PHP中如何自定義錯誤處理以及如何屏蔽錯誤,希望對大家有幫助!

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

我們在日常開發中,遇到錯誤是難免的,有些時候我們可以指定一個函數作為錯誤來處理函數,在PHP中就存在一個自定義錯誤處理函數。

set_error_handler() 函數自定義錯誤處理函數

PHP中提供了set_error_handler()函數就是用來指定一個函數作為錯誤處理函數,它的語法格式如下:

set_error_handler(自定義函數名 [, int $error_types = E_ALL | E_STRICT ])

其中自定義函數名這個自定義函數的語法格式如下:

error_handler(int 錯誤的級別 , string 錯誤的信息 [, string 發生錯誤的文件名 [, int 發生錯誤的行號 ]])

之前如果有過定義的錯誤處理程序,返回的就是改程序的程序名稱;如果是內置的錯誤處理程序,返回的結果是NULL。若是指定了一個無效的回調函數,同樣會返回NULL。

接下來我們通過示例來看一下,自定義一個錯誤處理函數,并使用它來處理程序中的錯誤,示例如下:

<?php     function error_handler($errno, $errstr, $errfile, $errline ) {         echo "error number:".$errno."<br/>";         echo "error msg:".$errstr."<br/>";         echo "error file:".$errfile."<br/>";         echo "error line:".$errline."<br/>";         die('something error');     }     set_error_handler("error_handler");     strpos(); ?>

輸出結果:

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

我們在使用此函數時需要注意的是,只用這種方式來進行錯誤處理,若是函數沒有錯誤的話,或者說程序沒有在錯誤的函數中運行,程序會繼續往下執行發生錯誤的函數語句,因此我們需要使用die()函數來終止函數的運行。

在我們的日常開發中,程序中的異常無法自動拋出來,這時候我們也可以使用set_error_handler() 自定義,將異常當作錯誤來處理,這樣我們就可以使用自定義錯誤處理來自動捕捉異常。

示例如下:

<?php     function error_handler($errno, $errstr, $errfile, $errline ) {         echo "error number:".$errno."<br/>";         echo "error msg:".$errstr."<br/>";         echo "error file:".$errfile."<br/>";         echo "error line:".$errline."<br/>";         die('something error');     }     set_error_handler("error_handler");     /* 觸發異常 */     try {         $a = 5/0;//程序會自動捕捉這個異常,并且由自定義函數來處理         echo $a;     } catch(Exception $e) {         echo $e->getMessage();     } ?>

輸出結果:

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

錯誤屏蔽

在PHP開發過程中,我們不僅可以通過set_error_handler()自定義錯誤處理函數來處理錯誤,我們還能夠把錯誤屏蔽掉,在有些情況下,錯誤屏蔽也是必不可少的。那接下來給大家列舉一些用于錯誤屏蔽的方法。

  • @—錯誤控制運算符

在PHP中,將錯誤控制運算符@,放在一個表達式的前面,那這個表達式中可能存在的錯誤都會被屏蔽掉。

其中關于@的使用,我們需要注意的是:@運算符只有放在表達式的前面才會生效,例如變量、函數、常量等等的前面可以使用@運算符,絕對不能放在函數的或者類的定義之前,也不能夠放在條件結構語句的前面。

示例如下:

<?php     $link = @mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('數據庫連接失??!'); ?>

輸出結果:

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

在上述示例中,看得出通過@錯誤控制運算符,在表達式前能夠屏蔽表達式。

  • 使用 error_reporting() 函數屏蔽錯誤

PHP 中有很多的錯誤級別,使用 error_reporting() 函數可以設置 PHP 會報告何種錯誤,函數的語法格式如下:

error_reporting(設置錯誤級別)

關于錯誤級別在上一篇文章《帶你一起了解PHP的錯誤類型和錯誤級別》中有更詳細的介紹,接下來我們通過示例來看一下函數的使用:

<?php     error_reporting(0);     $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db") or die('數據庫連接失?。?#39;); ?>

輸出結果:

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

  • 通過 display_errors 參數屏蔽錯誤

這種方法時最徹底的一種方法,前面兩種方法只作用于單行或者單個文件,但是通過display_errors 參數屏蔽錯誤是作用在所有的PHP文件,那我們一起來看一下應該怎么操作吧。

首先我們需要打開php.ini配置文件,然后找到display_errors,將其的值設置為Off就可以關閉所有的PHP錯誤報告了。

(在之前的文章《PHP如何上傳文件?看完就明白了!》中介紹了怎樣去php,ini配置文件的相關知識)

示例如下:

PHP中自定義錯誤處理函數與錯誤屏蔽你會了嗎?

由此便能夠屏蔽錯誤了。

大家如果感興趣的話,可以點擊《PHP視頻教程》進行

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
免费精品一区二区三区在线观看| 国产精品嫩草影院一二三区入口| 亚洲精品456播放| 国产在线无码精品无码| 精品国产成人亚洲午夜福利| 精品深夜AV无码一区二区| 久草精品视频在线播放| 中文国产成人精品久久水| 男女男精品网站免费观看| 日韩精品在线一区二区| 国产精品深爱在线| 成人精品一区二区激情| 亚洲精品国产第一综合99久久| 久久亚洲精品专区蓝色区| 2020国产精品视频| 久久精品国产亚洲AV无码偷窥| 午夜精品射精入后重之免费观看| 国产精品视频一区二区噜噜| 国产亚洲精品va在线| 国内精品卡1卡2卡区别| 亚洲日韩一页精品发布| 国产高清在线精品二区| 大香伊人久久精品一区二区| 亚洲精品国产肉丝袜久久| 久久久久99精品成人片直播 | 国产网红主播无码精品| www.久久精品| 四虎精品影库4HUTV四虎| 精品香蕉伊思人在线观看| 日韩美女专区中文字幕| 秋霞日韩久久理论电影| 日韩欧美中文字幕公布| 日韩精品久久不卡中文字幕| 亚洲欧美日韩中文高清www777| 日韩精品亚洲专区在线影视| 精品大臿蕉视频在线观看| 日韩精品中文字幕在线| 老司机精品视频免费| 亚洲精品美女久久久久99小说| 午夜国产精品无套| 国产精品无打码在线播放|