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