# [EMAIL PROTECTED] / 2007-01-04 16:34:46 -0600:
> On Wed, January 3, 2007 3:43 pm, Roman Neuhauser wrote:
> That __toString magic didn't even exist in earlier versions, and has
> already changed out from under you once, right?...

The whole program depends on the syntax and semantics of PHP 5.1, and
the fact that something hasn't changed for a long time means nothing
in this language. :)
 
> So which one really makes sense to use for robust code? :-)
> [shrug]

The one that's easier to maintain: faster to read, simpler to grok.
 
> What's impossible is enforcing and checking that try/catch is used in
> a consistent and coherent manner throughout a large body of code, from
> multiple developers/sources, such that all the pieces of a large
> software project are playing the same game plan.
> 
> try/catch *seems* really cool at first, as it localizes the
> error-handling to the code doing the work, to some degree, while
> allowing a natural semantic for dealing with the errors.
> 
> Once you have a non-trivial application, however, the try/catch that
> fires, and the error being caught, may have little or nothing to do
> with each other, as functions nested in methods wrapped around
> functions with methods inside them going umpteen layers deep...
> 
> You end up catching somebody else's error and handling it, even though
> what you THINK has gone wrong is not at all what actually went wrong,
> because they didn't write a try/catch handler where they should have.

Yeah, that can lead to unexpected behavior. It still helps prevent
crashes. 
 
> try {
>   if (something($whatever)){
>     $file = fopen("/some/path/or/other", 'r');
>   }
> }
> catch ($e){
>   //handle error from opening $file
> }
> 
> Then later on after that (possibly weeks/months/years) some other
> programmer (or yourself) changes the 'whatever' function to use
> fopen() to open a file, but does NOT wrap that in a try/catch because
> it's some silly little file that "has to work"

Ok, but what harm has been done? something() presumably did the fopen()
for a reason, and couldn't work without the file handle and couldn't
succeed anyway.

Sure, the program leaves the normal path at this moment unexpectedly,
and I can understand your frustration, but it has a bug, right? And
although the program contains a bug it hasn't crashed, it just entered
whatever orderly cleanup-and-exit path you had prepared.

If fopen() didn't throw and the programmer didn't check the return value
(catch the exception in your version), you'd be screwed not even knowing
it.
 
I think you brought a solid example of superiority of exceptions over
returning error codes.

-- 
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to