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;
}
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php