Re: try - catch is not so clear to me...

From: Date: Mon, 13 Apr 2009 14:52:36 +0000
Subject: Re: try - catch is not so clear to me...
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-291423@lists.php.net to get a copy of this message
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

« previous php.general (#291423) next »