回答
PHP不會拋出異常而引發警告和錯誤消息,因此您無法在此處找到任何東西。但是,您可以修改此行爲:
// Register a custom error handler that throws an ErrorException
// whenever a warrning or error occurs
set_error_handler(function ($errno, $errstr, $errfile, $errline) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
});
$a = 5;
$b = 0;
// Now a division by zero will result into an ErrorException being thrown
try {
$c = $a/$b;
echo $c;
} catch (ErrorException $e) {
echo 'Error: ' . $e->getMessage();
}
它的工作。但是如果你解釋了set_error_handler(函數($ errno,$ errstr,$ errfile,$ errline){0},則拋出新的ErrorException($ errstr,0,$ errno,$ errfile,$ errline); });那麼它會清除我的理解。謝謝。 – ripa 2013-02-11 10:47:47
這會註冊一個自定義錯誤處理程序 - 默認情況下,PHP會將錯誤消息記錄或打印到屏幕上。通過註冊一個自定義錯誤處理程序,您告訴PHP您希望以不同方式處理錯誤消息。 PHP然後調用錯誤處理程序而不是輸出消息。在這種情況下,錯誤處理程序會引發異常,即將錯誤消息轉換爲異常。 – Niko 2013-02-11 16:01:13
第一個:您正在第二行代碼(它可以被零分割)進行分割。
第二個:由於拋出錯誤,不需要在方法中返回false。
第三:爲什麼在這裏使用一個異常,而不僅僅是讓你的方法在執行devision之前返回true和false。
第四:爲什麼有一個方法,如果你只需要檢查$ y的值。調用方法或包含if語句只需要一行代碼。
那麼,爲什麼不能只是像:
case '/':
if($b > 0)
$prod = $a/$b;
break;
據我所知PHP不會被零扔在分裂異常。我測試了5.3,它觸發了一個警告,所有更小的版本。所以把它放在try塊中不會做任何事情。您可以使用ErrorException類將PHP錯誤映射爲Exceptions,並且可以使用錯誤和異常處理程序進行調試。請參閱https://github.com/sam-at-github/php_error_exceptions,以獲取有關擰緊的參考實現。
- 1. php異常處理異常
- 2. 在PHP中處理異常
- 3. php:在異常處理程序中處理異常?
- 4. C#我如何處理這個異常?
- 5. 如何處理這個異常?
- 6. 如何處理這個異常? (零esp)
- 7. php symfony異常處理/錯誤處理
- 8. PHP處理異常空處理
- 9. PHP錯誤處理和異常處理?
- 10. PHP CodeIgniter異常處理
- 11. PHP get_headers異常處理
- 12. PHP異常處理vs C#
- 13. httprequest異常處理php
- 14. 異常處理ExchangeWebServices php-ews
- 15. PHP SimpleTest - 處理異常
- 16. 處理Python異常/ PHP中的錯誤
- 17. 如何處理這個異常:無效操作異常
- 18. 異常處理:多次處理異常
- 19. 在PHP中處理外鍵異常
- 20. 如何處理異常處理代碼中的異常?
- 21. 這個簡單的Xamarin Android程序中未處理的異常
- 22. 這是正確使用的PHP異常處理/ Symfony2的
- 23. 不理解這個異常
- 24. 異常處理
- 25. 異常處理
- 26. 異常處理
- 27. 異常處理
- 28. 處理異常
- 29. 異常處理
- 30. 處理異常
可能重複[PHP:例外與錯誤?](http://stackoverflow.com/questions/841500/php-exceptions-vs-errors)。確保你檢查了所有答案。 – 2013-02-11 10:18:00
默認情況下,這會引發警告而不是例外。 – Niko 2013-02-11 10:18:57