国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP中使用register_shutdown_function函數(shù)截獲fatal error示例

2024-09-04 11:42:41
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

我們?cè)谧鲰?xiàng)目時(shí),偶爾會(huì)因?yàn)椴恢?jǐn)慎而出現(xiàn)fatal error。如果display_errors設(shè)置成off,那用戶將會(huì)看到的是一個(gè)空白的頁(yè)面。若設(shè)置成了on,那fatal error的信息將會(huì)呈現(xiàn)出來(lái)(當(dāng)然正常的人都不會(huì)這樣干)。

那我們有什么方法可以提前截獲到fatal error,并用我們自己自定義的友好形式反饋給用戶呢。PHP中有一個(gè)叫做  register_shutdown_function 的函數(shù),可以讓我們?cè)O(shè)置一個(gè)當(dāng)執(zhí)行關(guān)閉時(shí)可以被調(diào)用的另一個(gè)函數(shù).也就是說當(dāng)我們的腳本執(zhí)行完成或意外死掉導(dǎo)致PHP執(zhí)行即將關(guān)閉時(shí),這個(gè)函數(shù)將會(huì)被調(diào)用。

下面請(qǐng)看一個(gè)例子:

  1. <?php 
  2. $flag = false; 
  3. function deal_error(){ 
  4.     global $flag
  5.     if (!$flag){ 
  6.         die("粗問題啦,請(qǐng)稍后再試"); 
  7.     } 
  8.     return false; 
  9. register_shutdown_function("deal_error"); 
  10. //將因?yàn)橹旅e(cuò)誤而失敗 
  11. //$obj = new NotExistClass(); //引入未定義的類 
  12. require('./test.php'); 
  13. $flag = true; 

我們?cè)诔绦蛉肟谔帲O(shè)置flag為false,最后設(shè)置成true,表明程序正常執(zhí)行。若flag最后不為true,說明在中間某個(gè)地方死掉了,此時(shí)就會(huì)調(diào)用register_shutdown_function,輸出我們自定義的錯(cuò)誤結(jié)果。

如上面的類未定義、引入不存在的文件(必須使用require或require_once)等會(huì)導(dǎo)致fatal error。當(dāng)然,要是你程序是缺個(gè)標(biāo)點(diǎn)或者多了個(gè)特殊字符啥的,那就沒辦法了。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿克苏市| 体育| 乌拉特后旗| 天峻县| 新竹市| 灯塔市| 长治县| 垣曲县| 利津县| 阿坝县| 栾城县| 延吉市| 巧家县| 疏附县| 英吉沙县| 东乡| 德庆县| 沭阳县| 邢台市| 竹北市| 安丘市| 准格尔旗| 石林| 政和县| 漾濞| 建德市| 全州县| 昭通市| 宁波市| 万荣县| 中阳县| 巴青县| 边坝县| 三原县| 清水河县| 若尔盖县| 南漳县| 阳春市| 灵寿县| 文水县| 沧州市|