set_error_handler( function( $num, $msg, $file, $line ) {
# take into account the '@' operators ( or remove this line and ignore them ):
if ( error_reporting() === 0 ) return false;
throw new \ErrorException( $msg, $num, 0, $file, $line );
});
This will transform all user catchable internal php errors (not parse errors) into \ErrorException exceptions (a subclass of \Exception ).
Cheers