精品久久久久久亚洲精品_成人午夜网站_www日本高清_亚洲精品久久久久午夜福

熱門文章

最新文章

PHP中的錯誤及其處理機制

發(fā)布時間:2021-06-22 15:26:45

在PHP的學(xué)習(xí)過程中,我們會接觸到兩個概念,一個是錯誤,一個是異常。啥玩意?他們不是一個東西嘛?如果接觸過Java、C#之類的純面向?qū)ο笳Z言的同學(xué),可能對異常是沒有什么問題,畢竟所有的問題都可以try...catch來解決。但是像PHP這種從面向過程發(fā)展到面向?qū)ο蟮恼Z言來說,錯誤和異常就是兩個完全不同的東西了。

我們將用一系列的文章來徹底的搞懂PHP中的錯誤和異常到底是怎么回事,有哪些處理這些錯誤和異常的機制,我們應(yīng)該如何對待它們。

什么是錯誤?

錯誤,一般是由PHP本身的因素所導(dǎo)致的問題,錯誤的語法、環(huán)境的配置不當?shù)榷紩疱e誤。錯誤和php.ini文件當中的error_reporting參數(shù)有直接的關(guān)系。相信大家都配過這個參數(shù)。一般會把它配置為 E_ALL & ~E_NOTICE 。這是什么意思呢?我們先來看看PHP中有哪些錯誤類型:

Fatal Error:致命錯誤(腳本終止運行)

  • E_ERROR // 致命的運行錯誤,錯誤無法恢復(fù),暫停執(zhí)行腳本

  • E_CORE_ERROR // PHP啟動時初始化過程中的致命錯誤

  • E_COMPILE_ERROR // 編譯時致命性錯,就像由Zend腳本引擎生成了一個E_ERROR

  • E_USER_ERROR // 自定義錯誤消息。像用PHP函數(shù)trigger_error(錯誤類型設(shè)置為:E_USER_ERROR)

Parse Error:編譯時解析錯誤,語法錯誤(腳本終止運行)

E_PARSE //編譯時的語法解析錯誤

Warning Error:警告錯誤(僅給出提示信息,腳本不終止運行)

  • E_WARNING // 運行時警告 (非致命錯誤)。

  • E_CORE_WARNING // PHP初始化啟動過程中發(fā)生的警告 (非致命錯誤) 。

  • E_COMPILE_WARNING // 編譯警告

  • E_USER_WARNING // 用戶產(chǎn)生的警告信息

Notice Error:通知錯誤(僅給出通知信息,腳本不終止運行)

  • E_NOTICE // 運行時通知。表示腳本遇到可能會表現(xiàn)為錯誤的情況.

  • E_USER_NOTICE // 用戶產(chǎn)生的通知信息。

在配置文件中的 E_ALL & ~E_NOTICE 就是顯示所有錯誤但通知錯誤類錯誤除外的意思。當然,我們在代碼中也可以手動的改變這種錯誤信息的通知。

1
error_reporting(E_ALL);

通過這行代碼,我們就讓當前文件代碼中的錯誤全部顯示出來了。Notice 和 Warning 類型的錯誤是不會中斷代碼運行的,他們是通知和報警,并不是致命的錯誤。而其他類型的錯誤則會中斷代碼的執(zhí)行。

1
2
3
4
5
$a = 100 / 0; // Warning: Division by zero
echo $f; // Notice: Undefined variable: f
test(); // Fatal error: Uncaught Error: Call to undefined function test()
 
echo 1;

上述代碼中分別是Warning的除0錯誤警告和echo $f;的未定義變量提示,這兩行代碼都是可以在報錯后可以繼續(xù)向下運行的。而未定義的方法則是Fatal級別的致命錯誤了。所以最后那個1也不會輸出了。

那么錯誤要如何處理呢?原則上我們應(yīng)該是要去消滅這些錯誤的,因為他們基本上不會是我們寫代碼的邏輯沒理清而產(chǎn)生的邏輯錯誤,是實打?qū)嵉囊恍┱Z法及環(huán)境錯誤,這種錯誤在生產(chǎn)環(huán)境是不應(yīng)該出現(xiàn)的。同時,它們與異常最最重要的一個區(qū)別就是,它們無法通過try...catch進行捕獲。也就是說,這種錯誤沒有非常好的錯誤后處理機制。

1
2
3
4
5
6
try {
    $a = 100 / 0; // Warning: Division by zero
    echo $f; // Notice: Undefined variable: f
} catch (Excepiton $e) {
    print_r($e); // 無法捕獲
}

不過,PHP還是提供了一些處理錯誤的函數(shù)供我們使用。

  • set_error_handler()

基本上只能處理 Warning 和 Notice 級別的錯誤。

1
2
3
4
5
6
7
8
9
set_error_handler(function( $errno , $errstr ){
    echo 'set_error_handler:', $errno, $errstr, PHP_EOL;
});
$a = 100 / 0; // Warning: Division by zero
echo $f; // Notice: Undefined variable: f
test(); // Fatal error: Uncaught Error: Call to undefined function test()
 
// set_error_handler:2Division by zero
// set_error_handler:8Undefined variable: f

從代碼中可以看出,F(xiàn)atal error這種致命錯誤并沒有捕獲到。

  • register_shutdown_function()

其實它也不是用來處理錯誤的,這個函數(shù)的作用是在發(fā)生致命錯誤,程序停止前最后會調(diào)用的一個函數(shù)。可以用來記錄日志或者關(guān)閉一些重要的外部句柄,不過在生產(chǎn)環(huán)境中,我們一般會用php.ini中的log_error來進行日志的記錄。所以這個函數(shù)也用得并不多。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
register_shutdown_function(function(){
    echo 'register_shutdown_function:', PHP_EOL;
    print_r(error_get_last());
});
test();
 
// register_shutdown_function:
// Array
// (
//     [type] => 1
//     [message] => Uncaught Error: Call to undefined function test() in /php/202002/source/一起搞懂PHP的錯誤和異常(一).php:16
// Stack trace:
// #0 {main}
//   thrown
//     [file] => /php/202002/source/一起搞懂PHP的錯誤和異常(一).php
//     [line] => 16
// )

這個函數(shù)的回調(diào)函數(shù)中沒有任何的參數(shù)變量,所以我們需要通過 error_get_last() 來拿到本次執(zhí)行中發(fā)生的所有錯誤情況。另外要注意的是,只有在運行時產(chǎn)生的錯誤都會調(diào)用到這個注冊函數(shù)的回調(diào)中,編譯時的錯誤是也是無法通過這個函數(shù)捕獲到的,比如直接的語法錯誤:

1
2
3
4
5
6
register_shutdown_function(function(){
    echo 'register_shutdown_function:', PHP_EOL;
    print_r(error_get_last());
});
 
test(a+-); // Parse error: syntax error, unexpected ')'

總結(jié)

綜上所述,就像在文章前面說過的,錯誤是應(yīng)該盡量不要帶到生產(chǎn)環(huán)境中去的,它們并沒有很好的處理機制。或者說,錯誤就是我們要盡量避免的東西,因為大部分情況下它和我們的邏輯代碼并沒有太大的關(guān)系。而且嚴重的錯誤會直接導(dǎo)致程序運行的中止,無法像異常一樣通過catch機制保證程序繼續(xù)運行。

以上就是PHP中錯誤和異常的概念的詳細內(nèi)容,更多關(guān)于PHP 錯誤和異常的資料請關(guān)注腳本之家其它相關(guān)文章!


返回頂部
精品久久久久久亚洲精品_成人午夜网站_www日本高清_亚洲精品久久久久午夜福

      9000px;">

          在线观看成人小视频| proumb性欧美在线观看| 一区二区在线观看免费| 26uuu精品一区二区| 欧美日韩精品综合在线| 在线观看欧美黄色| 色综合亚洲欧洲| av午夜精品一区二区三区| 日韩在线卡一卡二| 亚洲一区二区在线免费观看视频| 欧美激情一区二区在线| 国产欧美1区2区3区| 精品国产髙清在线看国产毛片| 欧美日韩精品二区第二页| 欧美唯美清纯偷拍| 777午夜精品免费视频| 欧美三电影在线| 欧美精品乱码久久久久久 | 欧美一区二区在线播放| 欧美日韩一区二区电影| 欧美男同性恋视频网站| 日韩精品专区在线影院重磅| 欧美成人免费网站| 国产精品久久久久aaaa樱花| 自拍av一区二区三区| 亚洲第一久久影院| 精品在线观看视频| 成年人网站91| 欧美视频一区二区在线观看| 欧美精品v日韩精品v韩国精品v| 欧美一区二区三区在| 国产日韩精品一区| 一区二区免费在线| 精品一区二区在线看| 成人涩涩免费视频| 欧美亚洲国产怡红院影院| 日韩欧美另类在线| 亚洲精品一卡二卡| 麻豆成人久久精品二区三区小说| 国产麻豆9l精品三级站| 色综合久久中文字幕综合网 | 91麻豆精品国产91久久久久久| 亚洲精品一区二区三区在线观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 亚洲麻豆国产自偷在线| 毛片av一区二区| 一本大道久久a久久精品综合| 欧美精选午夜久久久乱码6080| 国产日韩影视精品| 五月综合激情网| 成人午夜视频免费看| 6080亚洲精品一区二区| 国产精品久99| 另类中文字幕网| 94色蜜桃网一区二区三区| 精品国产乱码久久久久久久| 亚洲欧美影音先锋| 国产福利一区二区三区视频在线 | 国产欧美综合在线| 蜜臀av国产精品久久久久 | 欧美美女一区二区三区| 国产精品人成在线观看免费| 日本美女一区二区| 欧美性大战久久久久久久蜜臀 | av高清久久久| 久久精品亚洲国产奇米99| 日韩精品一级二级 | 热久久久久久久| 欧美日韩不卡一区二区| 亚洲人123区| 成人av免费在线观看| 久久这里只有精品视频网| 丝袜美腿亚洲综合| 色一区在线观看| ●精品国产综合乱码久久久久| 日韩精品一区第一页| 欧美日韩在线亚洲一区蜜芽| 亚洲女女做受ⅹxx高潮| 99在线视频精品| 国产精品区一区二区三| 国产白丝网站精品污在线入口| 精品久久久久久无| 久久99国产精品免费网站| 日韩亚洲欧美在线观看| 丝袜美腿亚洲色图| 欧美一区二区三区播放老司机| 五月婷婷综合网| 日韩视频一区二区三区在线播放| 亚洲妇熟xx妇色黄| 欧美日本韩国一区| 日本亚洲一区二区| 日韩精品一区二区在线| 久久国产精品免费| 久久综合色鬼综合色| 国产精品996| 国产精品福利一区| 在线观看网站黄不卡| 无码av免费一区二区三区试看| 91精品国产综合久久久久久久| 日韩精品色哟哟| 久久综合久久综合久久| 国产一区二区三区四区五区美女| 日本一区二区三区dvd视频在线| 国产精品羞羞答答xxdd| 亚洲三级电影全部在线观看高清| 91麻豆免费观看| 日本一不卡视频| 国产精品免费丝袜| 欧美日韩午夜精品| 国产在线精品一区二区不卡了 | 久久精品国产精品青草| 国产拍揄自揄精品视频麻豆| 91麻豆swag| 美美哒免费高清在线观看视频一区二区 | 97久久精品人人爽人人爽蜜臀| 五月开心婷婷久久| 国产亚洲一二三区| 欧美精品一二三四| 成人黄页在线观看| 青娱乐精品在线视频| 国产精品久久777777| 欧美久久久影院| 色综合中文综合网| 欧美一区二区美女| 91蜜桃婷婷狠狠久久综合9色| 日韩av一级电影| 日韩理论电影院| 亚洲精品在线观看视频| 欧美日韩一区二区三区四区 | 亚洲va欧美va国产va天堂影院| 久久品道一品道久久精品| 在线免费观看一区| 成人av网址在线| 激情av综合网| 日韩中文字幕区一区有砖一区| 精品久久久久久久久久久久久久久久久 | 久久精品国产99| 亚洲成av人片一区二区| 亚洲伦理在线精品| 国产精品毛片无遮挡高清| 日韩亚洲欧美在线| 在线播放/欧美激情| 91精品福利视频| 国产 欧美在线| 国产一区二区三区最好精华液| 日av在线不卡| 人妖欧美一区二区| 婷婷国产在线综合| 婷婷综合久久一区二区三区| 一区二区三区在线视频免费观看| 中文字幕精品在线不卡| 欧美经典一区二区| 国产农村妇女毛片精品久久麻豆 | 91影院在线免费观看| 风间由美一区二区av101 | 欧美区一区二区三区| 欧美揉bbbbb揉bbbbb| 欧美三级视频在线观看| 欧美日韩在线亚洲一区蜜芽| 色综合久久中文字幕综合网| 91在线观看地址| 91视频com| 欧美日韩国产一级片| 在线综合视频播放| 日韩欧美一二三四区| 精品久久久三级丝袜| 国产偷国产偷精品高清尤物| 久久久91精品国产一区二区精品 | 欧美中文字幕一二三区视频| 欧美日韩中文另类| 欧美一级片在线看| 日韩写真欧美这视频| 久久久精品中文字幕麻豆发布| 国产清纯白嫩初高生在线观看91| 国产日韩欧美一区二区三区综合| 国产日韩成人精品| 一区二区理论电影在线观看| 午夜电影久久久| 国产精品一区二区三区99| 99国产精品久久久久久久久久久| 91官网在线免费观看| 欧美绝品在线观看成人午夜影视| 欧美videos中文字幕| 国产精品亲子伦对白| 一区二区三区鲁丝不卡| 久久99在线观看| 成人av免费在线播放| 欧美日韩高清在线| 久久久久一区二区三区四区| 日韩美女视频一区| 美女久久久精品| 色综合久久久网| 欧美sm美女调教| 亚洲男女毛片无遮挡| 精品一区二区在线看| 色婷婷激情综合| 久久精品人人爽人人爽| 天堂一区二区在线免费观看| 国产精品一区二区91| 欧美精品丝袜久久久中文字幕|