set_error_handler

set_error_handler -- Sets a user-defined error handler function.

Description

string set_error_handler ( string error_handler)

The example below shows the handling of internal execptions by triggering errors and handling them with a user defined function :

Ejemplo 1 .

 
?php

 
/

 
/

 
redefine

 
the

 
user

 
error

 
constants

 
-

 
PHP4

 
only

 
define

 
(

 
FATAL,E_USER_ERROR)

 
;

 
define

 
(ERROR,E_USER_WARNING)

 
;

 
define

 
(WARNING,E_USER_NOTICE)

 
;

 
/

 
/

 
set

 
the

 
error

 
reporting

 
level

 
for

 
this

 
script

 
error_reporting

 
(FATAL

 
+

 
ERROR

 
+

 
WARNING)

 
;

 
/

 
/

 
error

 
handler

 
function

 
function

 
myErrorHandler

 
($errno

 
,

 
$errstr

 
)

 
{

 
switch

 
($errno

 
)

 
{

 
case

 
FATAL

 
:

 
echo

 
"

 
b

 
FATAL

 
/

 
b

 
[$errno

 
]

 
$errstr

 
br

 
\n"

 
;

 
echo

 
"

 
Fatal

 
error

 
in

 
line

 
".__LINE__

 
.

 
"

 
of

 
file

 
".__FILE__

 
;

 
echo

 
"

 
,

 
PHP

 
".PHP_VERSION

 
.

 
"

 
(".PHP_OS

 
."

 
)

 
br

 
\n"

 
;

 
echo

 
"Aborting..

 
.

 
br

 
\n"

 
;

 
exit

 
-1

 
;

 
break

 
;

 
case

 
ERROR

 
:

 
echo

 
"

 
b

 
ERROR

 
/

 
b

 
[$errno

 
]

 
$errstr

 
br

 
\n"

 
;

 
break

 
;

 
case

 
WARNING

 
:

 
echo

 
"

 
b

 
WARNING

 
/

 
b

 
[$errno

 
]

 
$errstr

 
br

 
\n"

 
;

 
break

 
;

 
default

 
:

 
echo

 
"Unkown

 
error

 
type

 
:

 
[$errno

 
]

 
$errstr

 
br

 
\n"

 
;

 
break

 
;

 
    }

 
}

 
/

 
/

 
function

 
to

 
test

 
the

 
error

 
handling

 
function

 
scale_by_log

 
($vect

 
,

 
$scale

 
)

 
{

 
if

 
(

 
!is_numeric($scale

 
)

 
|

 
|

 
$scale

 
=

 
0

 
)

 
trigger_error("log(x

 
)

 
for

 
x

 
=

 
0

 
is

 
undefined

 
,

 
you

 
used

 
:

 
scale

 
=

 
$scale"

 
,

 
FATAL)

 
;

 
if

 
(!is_array($vect)

 
)

 
{

 
trigger_error("Incorrect

 
input

 
vector

 
,

 
array

 
of

 
values

 
expected"

 
,

 
ERROR)

 
;

 
return

 
null

 
;

 
    }

 
for

 
($i=0

 
;

 
$i

 
count($vect)

 
;

 
$i++

 
)

 
{

 
if

 
(!is_numeric($vect[$i])

 
)

 
trigger_error("Value

 
at

 
position

 
$i

 
is

 
not

 
a

 
number

 
,

 
using

 
0

 
(zero)"

 
,

 
WARNING)

 
;

 
$temp[$i

 
]

 
=

 
log($scale

 
)

 
*

 
$vect[$i]

 
;

 
    }

 
return

 
$temp

 
;

 
}

 
/

 
/

 
set

 
to

 
the

 
user

 
defined

 
error

 
handler

 
$old_error_handler

 
=

 
set_error_handler("myErrorHandler")

 
;

 
/

 
/

 
trigger

 
some

 
errors

 
,

 
first

 
define

 
a

 
mixed

 
array

 
with

 
a

 
non-numeric

 
item

 
echo

 
"vector

 
a\n"

 
;

 
$a

 
=

 
array(2,3

 
,"foo",5.5,43.3,21.11)

 
;

 
print_r($a)

 
;

 
/

 
/

 
now

 
generate

 
second

 
array

 
,

 
generating

 
a

 
warning

 
echo

 
"----\nvector

 
b

 
-

 
a

 
warning

 
(b

 
=

 
log(PI

 
)

 
*

 
a)\n"

 
;

 
$b

 
=

 
scale_by_log($a

 
,

 
M_PI)

 
;

 
print_r($b)

 
;

 
/

 
/

 
this

 
is

 
trouble

 
,

 
we

 
pass

 
a

 
string

 
instead

 
of

 
an

 
array

 
echo

 
"----\nvector

 
c

 
-

 
an

 
error\n"

 
;

 
$c

 
=

 
scale_by_log("not

 
array",2.3)

 
;

 
var_dump($c)

 
;

 
/

 
/

 
this

 
is

 
a

 
critical

 
error

 
,

 
log

 
of

 
zero

 
or

 
negative

 
number

 
is

 
undefined

 
echo

 
"----\nvector

 
d

 
-

 
fatal

 
error\n"

 
;

 
$d

 
=

 
scale_by_log($a

 
,

 
-2.5)

 
;

 

?



And when you run this sample script, the output will be
 
vector

 
a

 
Array

 
(

 
[0

 
]

 
=

 
2

 
[1

 
]

 
=

 
3

 
[2

 
]

 
=

 
foo

 
[3

 
]

 
=

 
5.5

 
[4

 
]

 
=

 
43.3

 
[5

 
]

 
=

 
21.11

 
)

 
---

 
-

 
vector

 
b

 
-

 
a

 
warning

 
(b

 
=

 
log(PI

 
)

 
*

 
a

 
)

 
b

 
WARNING

 
/

 
b

 
[1024

 
]

 
Value

 
at

 
position

 
2

 
is

 
not

 
a

 
number

 
,

 
using

 
0

 
(zero

 
)

 
br

 
Array

 
(

 
[0

 
]

 
=

 
2.2894597716988

 
[1

 
]

 
=

 
3.4341896575482

 
[2

 
]

 
=

 
0

 
[3

 
]

 
=

 
6.2960143721717

 
[4

 
]

 
=

 
49.566804057279

 
[5

 
]

 
=

 
24.165247890281

 
)

 
---

 
-

 
vector

 
c

 
-

 
an

 
error

 
b

 
ERROR

 
/

 
b

 
[512

 
]

 
Incorrect

 
input

 
vector

 
,

 
array

 
of

 
values

 
expected

 
br

 
NULL

 
---

 
-

 
vector

 
d

 
-

 
fatal

 
error

 
b

 
FATAL

 
/

 
b

 
[256

 
]

 
log(x

 
)

 
for

 
x

 
=

 
0

 
is

 
undefined

 
,

 
you

 
used

 
:

 
scale

 
=

 
-2.5

 
br

 
Fatal

 
error

 
in

 
line

 
16

 
of

 
file

 
trigger_error.php

 
,

 
PHP

 
4.0.1pl2

 
(Linux

 
)

 
br

 
Aborting..

 
.

 
br