[PHP-BUG] Req #67860 [NEW]: Throw an "acceptable" exception

[email protected] ("david dot proweb at gmail dot com")
Newsgroups php.standards
Message-ID <[email protected]>
From:             david dot proweb at gmail dot com
Operating system: Irrelevant
PHP version:      Irrelevant
Package:          PHP Language Specification
Bug Type:         Feature/Change Request
Bug description:Throw an "acceptable" exception

Description:
------------
Imagine that you do ($a / $b), but $b is zero.
So you will receives "Warning: Division by zero.".

You can avoid that by doing @($a / $b), something like that.

But imagine if PHP can thrown an exception that not need be captured.
It is: you can, optionally, capture that, but if not, will only thrown a
notice, instead of warning.

// Supposing that it is the PHP division constructor:
function php_div($a, $b) {
    if($b === 0) {
        throw casual new Exception("Division by zero.");
    }

    return $a / $b;
}

// So if I do:
5 / 0; // Notice: Division by zero.

// But I can do:
try { 5 / 0; }
catch(Exception $e) { ... } // Avoid notice.

// Or even:
@(5 / 0); // Avoid casual Exception.

--

User can throw casual exceptions too.
For instance:

function name_fix($name) {
    ...
    if(name_uncommon($name)) {
        throw casual new Exception("This name is uncommon.");
    }
    ...
    return $name_fixed;
}

echo name_fix("David"); // David
echo name_fix("Hakuna Matata"); // Hakuna Matata + Notice

// When you capture that, statement will be blocked.
try { echo name_fix("Hakuna Matata"); }
catch(Exception $e) { echo "The Hakuna Matata is so uncommon."; }
// -> The Hakuna Matata is so uncommon. (not echo name, not notice)

--

Exception need a new property like `boolean $isCasual`
($e->isCasual()).

--

Note: apply it to "division by zero" is only to examplify my feature
request.


-- 
Edit bug report at https://bugs.php.net/bug.php?id=67860&edit=1
--
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.