Re: Notice errors with set_error_handler

This is a discussion on Re: Notice errors with set_error_handler within the PHP Language forums, part of the PHP Programming Forums category; Hi John! On Thu, 24 Jul 2003 20:03:08 +0200, "JohnVT" <johnN0SPAM@foobar.nl> wrote: &...


Go Back   Usenet Forums > PHP Programming Forums > PHP Language

FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 07-24-2003
Jochen Daum
 
Posts: n/a
Default Re: Notice errors with set_error_handler

Hi John!

On Thu, 24 Jul 2003 20:03:08 +0200, "JohnVT" <johnN0SPAM@foobar.nl>
wrote:

>(Crossposted from alt.comp.lang.php)
>
>Questions in comments.
>
>Thanks you.
>
>Greetings,
>
> - John
>
><?
>error_reporting (E_ALL);
>
>function myErrorHandler($errno, $errstr, $errfile, $errline) {
> echo "<br>Error number $errno \"$errstr\" in $errfile on line
>$errline.<br>";
>}
>
>$x = $a;
>@$x = $b;
>
>set_error_handler("myErrorHandler");
>$x = $c;
>@$x = $d;
>
>/*
>
>Displays:
>
>Notice: Undefined variable: a in
>c:\data\htdocs\projects\photobook\testerror.php on line 8
>Error number 8 "Undefined variable: c" in
>c:\data\htdocs\projects\photobook\testerror.php on line 11.
>Error number 8 "Undefined variable: d" in
>c:\data\htdocs\projects\photobook\testerror.php on line 12.
>
>1) Why does it fall over @$x = $d (with my own error handler) and not over
>@$x = $b with the standard error handler?


What is the setting of error_reproting without your error_handler?

>2) From the manual I understood only E_USER_* errors were handled by the
>set_error_handler. Why is E_NOTICE given to myErrorHandler()?


AFAIK, all errors, which are not fatal are given to the users error
handler. You want to use it to handle errors of xxsql_functions, if
there is a problem with the database for example.

HTH, Jochen

--
Jochen Daum - CANS Ltd.
PHP DB Edit Toolkit -- PHP scripts for building
database editing interfaces.
http://sourceforge.net/projects/phpdbedittk/
Reply With Quote
  #2 (permalink)  
Old 07-25-2003
JohnVT
 
Posts: n/a
Default Re: Notice errors with set_error_handler

Thanks for your reply Jochen.

I understand error handling better now.

I was wrong about the error types that are handled by your own error
handler; E_USER_*, E_WARNING and E_NOTICE will be handled by your own
handler, the others will be handled by the standard handler.

About the other question: With set_error_handler() you bypass the standard
error handler. The standard error handler exits after a fatal error, let you
use @maybe_goes_wrong(), etc. So you'd have to take care of these things
yourself in your own error handler.

So when I use my own error handler and I try ...

---
if (!($fp = @fopen('not_a_file', 'r')))
trigger_error("Can't open file!", E_USER_WARNING);
---

.... I get ...

---
Warning: fopen("not_a_file", "r") - No such file or directory in
c:\data\htdocs\projects\photobook\newindex.php on line 19.

User Warning : Can't open file! in
c:\data\htdocs\projects\photobook\newindex.php on line 20.
---

Any idea how to keep using @ with your own error handler?

Thanks,

- John

"Jochen Daum" <jochen.daum@cans.co.nz> wrote in message
news:evh0ivoq9rg8gve62tpimcjih2r8o4vd5d@4ax.com...
> Hi John!
>
> On Thu, 24 Jul 2003 20:03:08 +0200, "JohnVT" <johnN0SPAM@foobar.nl>
> wrote:
>
> >(Crossposted from alt.comp.lang.php)
> >
> >Questions in comments.
> >
> >Thanks you.
> >
> >Greetings,
> >
> > - John
> >
> ><?
> >error_reporting (E_ALL);
> >
> >function myErrorHandler($errno, $errstr, $errfile, $errline) {
> > echo "<br>Error number $errno \"$errstr\" in $errfile on line
> >$errline.<br>";
> >}
> >
> >$x = $a;
> >@$x = $b;
> >
> >set_error_handler("myErrorHandler");
> >$x = $c;
> >@$x = $d;
> >
> >/*
> >
> >Displays:
> >
> >Notice: Undefined variable: a in
> >c:\data\htdocs\projects\photobook\testerror.php on line 8
> >Error number 8 "Undefined variable: c" in
> >c:\data\htdocs\projects\photobook\testerror.php on line 11.
> >Error number 8 "Undefined variable: d" in
> >c:\data\htdocs\projects\photobook\testerror.php on line 12.
> >
> >1) Why does it fall over @$x = $d (with my own error handler) and not

over
> >@$x = $b with the standard error handler?

>
> What is the setting of error_reproting without your error_handler?
>
> >2) From the manual I understood only E_USER_* errors were handled by the
> >set_error_handler. Why is E_NOTICE given to myErrorHandler()?

>
> AFAIK, all errors, which are not fatal are given to the users error
> handler. You want to use it to handle errors of xxsql_functions, if
> there is a problem with the database for example.
>
> HTH, Jochen
>
> --
> Jochen Daum - CANS Ltd.
> PHP DB Edit Toolkit -- PHP scripts for building
> database editing interfaces.
> http://sourceforge.net/projects/phpdbedittk/



Reply With Quote
Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On



All times are GMT +1. The time now is 08:48 PM.


Powered by vBulletin® Version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.0.0