From:             marcos dot neves at gmail dot com
Operating system: ANY
PHP version:      5.2.0
PHP Bug Type:     Scripting Engine problem
Bug description:  Exception code can´t be string

Description:
------------
The follow code is ok, cause 123, even as a string, it can be convert to
number.
new Exception("Message", "123");

The follow is not ok.
new Exception("Message", "NotNumber");

PHP is not a typed language, why Exception must have a number as code?

The problem is that error code doesn´t means "Number error code" but could
be a string error code, like mysql 5.1 uses.

Check the follow reproduce able code.

Reproduce code:
---------------
<?

error_reporting(E_ALL);

$host = "localhost";
$dbName = "test";
$user = "root";
$passwd = "";
$mysqlDsn = "mysql:host=$host;$dbName";

$pdo = new PDO($mysqlDsn, $user, $passwd);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
try {
        $pdo->query("SELECT version");
}catch(Exception $e){
        $code = $e->getCode(); // 42S22
        echo "<pre>";
        var_dump($code); // string(5) "42S22"
        throw new Exception($e->getMessage(), $code);
}

?>

Expected result:
----------------
The follow line, should accept the $code var, but doesn´t.
throw new Exception($e->getMessage(), $code);

It´s not consistent, since the Exception object constructor can´t accept a
non number as code, but it can return.

See:

$msg = $catchedPdoMysqlException->getMessage();
$code = $catchedPdoMysqlException->getCode();

new Exception($msg, $code); // $code is not valid one.

Actual result:
--------------
Exception code, should accept non numbers as a code value, as mysql does.

-- 
Edit bug report at http://bugs.php.net/?id=39615&edit=1
-- 
Try a CVS snapshot (PHP 4.4): 
http://bugs.php.net/fix.php?id=39615&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=39615&r=trysnapshot52
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=39615&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=39615&r=fixedcvs
Fixed in release:             
http://bugs.php.net/fix.php?id=39615&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=39615&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=39615&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=39615&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=39615&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=39615&r=notwrong
Not enough info:              
http://bugs.php.net/fix.php?id=39615&r=notenoughinfo
Submitted twice:              
http://bugs.php.net/fix.php?id=39615&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=39615&r=globals
PHP 3 support discontinued:   http://bugs.php.net/fix.php?id=39615&r=php3
Daylight Savings:             http://bugs.php.net/fix.php?id=39615&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=39615&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=39615&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=39615&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=39615&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=39615&r=mysqlcfg

Reply via email to