|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2013-12-02 06:51 UTC] bastiaan at basenlily dot me
Description: ------------ I've used set_error_handler to create an error handler that throws an exception when a scripting error happens as described here: http://us3.php.net/manual/en/class.errorexception.php Even though I've got my commands in a try/catch block I'm getting an uncaught exception error. Works fine in 5.4, breaks on 5.6 Test script: --------------- function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new Exception('Hello world'); } set_error_handler("exception_error_handler"); try { // try loading a file that does not have exif data: $results = @exif_read_data('test.txt', 0, true); } catch (Exception $e) { echo $e-> getMessage; // "We never get here..." }; Expected result: ---------------- Expect the echo to output our error instead of raising an uncaught exception error Actual result: -------------- Fatal error: Uncaught exception 'Exception' with message 'Hello world' in /Projects/test.php on line 8 PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Fri Oct 24 01:00:02 2025 UTC |
There seem to be more problems with internally generated errors, as the following testcase demonstrates: <?php set_exception_handler( function(Exception $e){ echo "-- handler --\n"; var_dump($e); exit(1); } ); set_error_handler( function($severity, $message, $file, $line) { throw new ErrorException($message, 0, $severity, $file, $line); } ); try { require 'non-existing-file.php'; } catch (\Exception $e) { echo "-- catch --\n"; var_dump($e); exit(2); } Expected result: Either a "classical" Fatal Error should occur or the warning for the missing file should be converted into an exception which in turn should be caught by catch() or at least by the global exception handler. Actual result: theseer@nyda ~/Desktop/Error $ php -v PHP 5.6.10 (cli) (built: Jun 11 2015 08:13:55) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies theseer@nyda ~/Desktop/Error $ php ex2.php PHP Warning: Uncaught exception 'ErrorException' with message 'require(non-existing-file.php): failed to open stream: No such file or directory' in /home/theseer/Desktop/Error/ex2.php:13 Stack trace: #0 /home/theseer/Desktop/Error/ex2.php(13): {closure}(2, 'require(non-exi...', '/home/theseer/D...', 13, Array) #1 /home/theseer/Desktop/Error/ex2.php(13): require() #2 {main} thrown in /home/theseer/Desktop/Error/ex2.php on line 13 PHP Fatal error: main(): Failed opening required 'non-existing-file.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/theseer/Desktop/Error/ex2.php on line 13 theseer@nyda ~/Desktop/Error $ echo $? 255 The same behavior can be observed with my (relatively old) PHP 7 build: theseer@nyda ~/Desktop/Error $ php70 -v PHP 7.0.0-dev (cli) (built: Mar 25 2015 14:40:01) Copyright (c) 1997-2015 The PHP Group Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies