PHP基礎(chǔ)之運(yùn)算符6——錯(cuò)誤控制運(yùn)算符
PHP 支持一個(gè)錯(cuò)誤控制運(yùn)算符:@。當(dāng)將其放置在一個(gè) PHP 表達(dá)式之前,該表達(dá)式可能產(chǎn)生的任何錯(cuò)誤信息都被忽略掉。
如果用?set_error_handler()?設(shè)定了自定義的錯(cuò)誤處理函數(shù),仍然會(huì)被調(diào)用,但是此錯(cuò)誤處理函數(shù)可以(并且也應(yīng)該)調(diào)用?error_reporting(),而該函數(shù)在出錯(cuò)語(yǔ)句前有 @ 時(shí)將返回 0。
如果激活了?track_errors?特性,表達(dá)式所產(chǎn)生的任何錯(cuò)誤信息都被存放在變量?$php_errormsg?中。此變量在每次出錯(cuò)時(shí)都會(huì)被覆蓋,所以如果想用它的話就要盡早檢查。
<?php/*?Intentional?file?error?*/$my_file?=?@file?(’non_existent_file’)?or????die?('Failed?opening?file:?error?was?’$php_errormsg’');//?this?works?for?any?expression,?not?just?functions:$value?=?@$cache[$key];//?will?not?issue?a?notice?if?the?index?$key?doesn’t?exist.?>
Note:?@ 運(yùn)算符只對(duì)表達(dá)式有效。對(duì)新手來(lái)說(shuō)一個(gè)簡(jiǎn)單的規(guī)則就是:如果能從某處得到值,就能在它前面加上 @ 運(yùn)算符。例如,可以把它放在變量,函數(shù)和?include?調(diào)用,常量,等等之前。不能把它放在函數(shù)或類的定義之前,也不能用于條件結(jié)構(gòu)例如?if?和?foreach?等。
Warning
目前的“@”錯(cuò)誤控制運(yùn)算符前綴甚至使導(dǎo)致腳本終止的嚴(yán)重錯(cuò)誤的錯(cuò)誤報(bào)告也失效。這意味著如果在某個(gè)不存在或者敲錯(cuò)了字母的函數(shù)調(diào)用前用了“@”來(lái)抑制錯(cuò)誤信息,那腳本會(huì)沒(méi)有任何跡象顯示原因而死在那里。
相關(guān)文章:
1. css進(jìn)階學(xué)習(xí) 選擇符2. ajax請(qǐng)求后臺(tái)得到j(luò)son數(shù)據(jù)后動(dòng)態(tài)生成樹(shù)形下拉框的方法3. 如何用VUE和Canvas實(shí)現(xiàn)雷霆戰(zhàn)機(jī)打字類小游戲4. Android實(shí)現(xiàn)動(dòng)態(tài)體溫計(jì)5. vue實(shí)現(xiàn)分頁(yè)的三種效果6. Python協(xié)程asyncio模塊的演變及高級(jí)用法7. AJAX實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作詳解【java后臺(tái)】8. PHP里10個(gè)鮮為人知但卻非常有用的函數(shù)9. Spring MVC+ajax進(jìn)行信息驗(yàn)證的方法10. Python搭建Keras CNN模型破解網(wǎng)站驗(yàn)證碼的實(shí)現(xiàn)
