Hello Brian,

Great points. I've been playing with some code examples to get a feel for it.

One thing I've stumbled upon that might be nice is the following:

Which allows to me handle Exceptions two ways, one for internal logging
and one for display to the user. I'll read the link you posted as well.

Thanks,

- Ben

class LogException extends Exception
{
public function errorMessage( )
{
file_put_contents('exception_log.txt', "\n" . $this->getMessage( ) . "\n");
}
}


class UserException extends Exception
{
public function errorMessage( )
{
 return "An error has occured with " . $this->getMessage( ) . "\n";
}
}


$email = "[EMAIL PROTECTED]";

try
{
try
{
 if (strpos($email, "example") !== FALSE)
 {
  throw new LogException($email);
 }
}
catch(LogException $e)
{
 $e->errorMessage( );
 /* throw exception again. */
 throw new UserException($email);
}
}
catch (UserException $e)
{
echo $e->errorMessage( );
}
----- Original Message ----- From: "Brian D." <[EMAIL PROTECTED]>
To: "NYPHP Talk" <[email protected]>
Sent: Wednesday, November 28, 2007 1:22 PM
Subject: Re: [nyphp-talk] If/else vs Try/catch


Ben,

Chris Snyder gave a good example of why you want to use error
handling, but one other thing you may want to look at is the built-in
PHP Exception class. This article had some code samples:
http://www.phpbuilder.com/manual/en/language.exceptions.php

The example you gave with try_include() doesn't tell the user/developer:
- why it failed
- where it failed
- how important is the failure (is it fatal?)

All you know is that you got false back, now you have to figure out if
that's going to break something or not. Exceptions allow you to pass
back different types of failures, details about the failure, the level
of severity, and much more that you wouldn't get back from a
true/false return.

One of the most important things to consider, in my opinion, is that
exceptions are a *standardized* way to handle errors. This means that
when Joe returns a string that says "FAILURE" but Fred returned
"false", you don't always know what to expect. If an exception is
thrown, then you know for sure that something has failed and you need
to handle it.

- Brian




On Nov 28, 2007 1:04 PM, Ben Sgro (ProjectSkyLine)
<[EMAIL PROTECTED]> wrote:
Hello Kenneth,

I saw an example similiar to this on PHP.net. I don't really
see why try/catch is better ... Not trying to start a war here. -= ]

function try_include( $filename )
{
    if( include($filename) != 1 )
    {
        echo "Problem trying to include file!";
        return false;
     }
    return true;
}
----- Original Message -----
From: "Kenneth Downs" <[EMAIL PROTECTED]>
To: "NYPHP Talk" <[email protected]>

Sent: Wednesday, November 28, 2007 12:53 PM
Subject: Re: [nyphp-talk] If/else vs Try/catch


> Picture this example also:
>
> function try_include($filename) {
>    try {
>       include($filename);
>    }
>    catch Exception(e) {
>       echo "Problem trying to include file!";
>       return false;
>    }
>    return true;
> }
>
> Ben Sgro (ProjectSkyLine) wrote:
>> Hello Chris,
>> Good points again. I've been doing some reading
>> to get a better grasp on it.
>>
>> http://www.w3schools.com/php/php_exception.asp
>>
>> Seems to be a good explanation.
>>
>> Thanks.
>>
>> - Ben
>>
>> ----- Original Message ----- From: "csnyder" <[EMAIL PROTECTED]>
>> To: "NYPHP Talk" <[email protected]>
>> Sent: Wednesday, November 28, 2007 11:38 AM
>> Subject: Re: [nyphp-talk] If/else vs Try/catch
>>
>>
>>> On Nov 28, 2007 11:25 AM, Ben Sgro (ProjectSkyLine)
>>> <[EMAIL PROTECTED]> wrote:
>>>> Thanks. I'll read up on it now...and post my thoughts.
>>>
>>> Trying to explain the benefits of try/catch is like trying to explain
>>> the benefits of OO code: you don't need it to get the job done, but >>> it
>>> really helps if you want to get the job done elegantly.
>>>
>>> If you find yourself writing code like:
>>>
>>> $success = $obj->process1();
>>> if ( $success ) {
>>>  $success = $obj->process2();
>>>  if ( $success ) {
>>>    $success = $obj->process3();
>>>  }
>>> }
>>> if ( !$success ) {
>>>  exit( "An error ocurred in either process 1, 2, or 3." );
>>> }
>>>
>>> ... then try/catch is the way out of your nightmare.
>>>
>>> try {
>>>  $obj->process1();
>>>  $obj->process2();
>>>  $obj->process3();
>>> } catch Exception( e ) {
>>>  exit( "An error occurred: ".$e->message() );
>>> }
>>>
>>> Error handling doesn't need to be part of your program logic anymore.
>>>
>>> --
>>> Chris Snyder
>>> http://chxo.com/
>>> _______________________________________________
>>> New York PHP Community Talk Mailing List
>>> http://lists.nyphp.org/mailman/listinfo/talk
>>>
>>> NYPHPCon 2006 Presentations Online
>>> http://www.nyphpcon.com
>>>
>>> Show Your Participation in New York PHP
>>> http://www.nyphp.org/show_participation.php
>> _______________________________________________
>> New York PHP Community Talk Mailing List
>> http://lists.nyphp.org/mailman/listinfo/talk
>>
>> NYPHPCon 2006 Presentations Online
>> http://www.nyphpcon.com
>>
>> Show Your Participation in New York PHP
>> http://www.nyphp.org/show_participation.php
>
>
> --
> Kenneth Downs
> Secure Data Software, Inc.
> www.secdat.com    www.andromeda-project.org
> 631-689-7200   Fax: 631-689-0527
> cell: 631-379-0010
>
> _______________________________________________
> New York PHP Community Talk Mailing List
> http://lists.nyphp.org/mailman/listinfo/talk
>
> NYPHPCon 2006 Presentations Online
> http://www.nyphpcon.com
>
> Show Your Participation in New York PHP
> http://www.nyphp.org/show_participation.php
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php




--
realm3 web applications [realm3.com]
freelance consulting, application development
(423) 506-0349
_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

_______________________________________________
New York PHP Community Talk Mailing List
http://lists.nyphp.org/mailman/listinfo/talk

NYPHPCon 2006 Presentations Online
http://www.nyphpcon.com

Show Your Participation in New York PHP
http://www.nyphp.org/show_participation.php

Reply via email to