如何禁用錯誤只是爲了特定的PHP函數,並在同一時間知道錯誤發生?例如,我使用php函數parse_url來解析一個url數組,有時它會返回一個錯誤,我想要做的就是一旦發生錯誤就解析下一個url,而不是在屏幕上顯示它(錯誤)。在PHP中禁用錯誤
回答
函數之前的@符號將會壓制錯誤信息,並且parse_url()在錯誤時返回false,所以只需抓住它。
if(@parse_url($url) === false) {
//Error has been caught here
}
加前綴的函數調用與@
,所以使用@parse_url()
應隱藏錯誤
要小心使用「@」這會影響腳本的性能。很多 – 2009-11-05 16:21:22
嗯,這很奇怪,從來沒有想過會是這樣。你知道爲什麼嗎? – Wim 2009-11-05 16:25:43
聽起來很可疑,所以我運行了一次基準測試,調用parse_url()一百萬次來查找好的和不好的網址,無論有沒有@。結果: 好網址,沒有@:1.986s 不良URL,沒有@:1.519s 良好的網址,以@:3.612s 不良URL,以@:2.567s 上卸載使用PHP 5.2.5機。所以你可以看到'@'的速度變慢了,但我們每次通話的時間差異在1-2微秒之間。 – Cal 2009-11-05 22:04:04
要無記載錯誤的特定語句,只需添加一個@
。
例
$file = @file_get_contents($url);
當,當找不到$網址file_get_contents
可以拋出錯誤。
您可以在任何地方使用@符號來沉默任何語句。像:
$i = @(5/0);
@是邪惡的。
您可以使用此:
try {
// your code
} catch (Exception $e) {
// a block that executed when the exception is raised
}
你可能想看看set_error_handler()
。
你可以做任何你想註冊自己的處理程序。
聽起來像是你正在尋找一個自定義的錯誤處理程序
的最好的辦法是將PHP的「錯誤」的例外,使用這裏列出http://php.net/manual/en/class.errorexception.php的技術再處理異常像你在其他語言中做的那樣:
function exception_error_handler($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
try {
parse_url(...)
} catch(Exception $e) {
- 1. lighttpd PHP錯誤:403 - 禁止
- 2. php 403禁止的錯誤
- 3. Opencart禁用Mysql/Php錯誤顯示
- 4. 啓用PHP錯誤日誌時NGINX錯誤日誌被禁用
- 5. 禁用文件include如果它生成錯誤(在php中)
- 6. WordPress的:undefined通知錯誤顯示,但PHP錯誤禁用?
- 7. 在EsLint中禁用半色錯誤
- 8. 在Nokogiri中禁用錯誤更正
- 9. 禁用serialEvent錯誤?
- 10. DatePicker禁用錯誤
- 11. 禁用cshtml錯誤
- 12. 在PHP中使用錯誤錯誤時發生錯誤
- 13. PHP/CodeIgniter文件url - 禁止錯誤
- 14. php腳本403禁止的錯誤
- 15. 在codeigniter中遇到PHP錯誤錯誤
- 16. 在PHP中禁用globbing exec()
- 17. 我在php.ini中禁用PHP錯誤報告,但它仍然在瀏覽器
- 18. 錯誤禁用div內容
- 19. Struts2 - 禁用轉換錯誤
- 20. 禁用調試錯誤?
- 21. 禁用PHPMailer錯誤消息
- 22. 禁用JavaScript彈出錯誤
- 23. 403在phpMyAdmin禁止錯誤
- 24. 跟蹤禁用錯誤在phpMyAdmin
- 25. 禁用netbeans中的HTML錯誤檢查
- 26. 已禁用複選框中的錯誤
- 27. 禁用Discord.NET 1.0中的「錯誤消息」
- 28. 在IE8中禁止腳本錯誤(C++)
- 29. 錯誤用PHP
- 30. 錯誤在PHP
你能發表一些代碼嗎? – jochil 2009-11-05 16:16:36