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

From: Date: Thu, 16 Apr 2009 00:21:15 +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-291541@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
Here is a practical example that may help you. Each of the functions can throw an exception, which causes the flow to jump to the catch block. try { $checksOK = true; checkEmailAddr($userSubmitedDataArray[EMAIL_ADDR_FIELD]); checkPhoneDigits($userSubmitedDataArray[PHONE_NUM_FIELD],'phone'); checkNotes($userSubmitedDataArray, $sizesArray); } catch (Exception $e) { //Message text in check functions $userErrorMsg = $e->getMessage(); } Here is one of the functions: function checkEmailAddr($emailAddr) {
    if(empty($emailAddr))
    {
        throw new Exception("No email address provided");
    }
    if(!preg_match("%\w@%", $emailAddr))
    {
        throw new Exception("Email address missing mailbox name.");
    }
    if(!filter_var($emailAddr, FILTER_VALIDATE_EMAIL))
    {
        throw new Exception("Email address error. Syntax is wrong. ");
    }
    $domain = substr(strchr($emailAddr, '@'), 1);
    if(!checkdnsrr($domain))
    {
        throw new Exception("Email address warning. Specified domain \"$domain\" appears to be invalid. Check carefully.");
    }
    return true;
}

« previous php.general (#291541) next »