Lamp Lists wrote:
hi to all!

actually, the statement in the Subject line is not 100% correct. I understand 
the purpose and how it works (at least I think I understand :-)) but to me it's 
so complicated way?

let's take a look in example from php.net(http://us3.php.net/try)


<?php
function inverse($x) {
    if (!$x) {
        throw new Exception('Division by zero.');
    }
    else return 1/$x;
}

try {
    echo inverse(5) . "\n";
    echo inverse(0) . "\n";
} catch (Exception $e) {
    echo 'Caught exception: ',  $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?> I would do the same thing, I think, less complicated:

<?php
function inverse($x)
{
    if (!$x) {
        echo 'Division by zero';
    }
    else return 1/$x;

}

echo inverse(5);
echo inverse(0);

// Continue execution
echo 'Hello world';
?>

I know this is "too simple, maybe not the best example", but can somebody please explain 
"the purpose" of try/catch?

Thanks.

-LL



Your example kind of defeats the point. The point of a try {} block is that it will attempt to execute code and execute catch on a true failure. Your function already is protected against failure.

Consider this

$x = 0;

try {
   $y = 4 / $x;  // This will divide by zero, not good.
} catch (Exception $e) {
   echo "Error: $e"
}



More importantly, the try/catch should be in your function, not around the invocations of your function:

function inverse($x) {
        try {
                return $x/0;
        } catch(Exception $e) {
                return false;
        }
}


Consider this also, simply echoing an error on divide by Zero might not be great if your function is called, say, before headers. Throwing exceptions can be re-caught by executing code, which can easily avoid pre-header output.

Does that clear up the purpose a bit? I'm no expert, but that's my understanding.

HTH,
Kyle

Reply via email to