Index: Exception.php
===================================================================
--- Exception.php	(revision 20974)
+++ Exception.php	(working copy)
@@ -19,74 +19,74 @@
  * @version    $Id$
  */
 
-if (version_compare(PHP_VERSION, '5.3.0', '<')) {
+/**
+ * @category   Zend
+ * @package    Zend
+ * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
+ * @license    http://framework.zend.com/license/new-bsd     New BSD License
+ */
+class Zend_Exception extends Exception
+{
     /**
-     * @category   Zend
-     * @package    Zend
-     * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
-     * @license    http://framework.zend.com/license/new-bsd     New BSD License
+     * @var null|Exception
      */
-    class Zend_Exception extends Exception
+    private $_previous = null;
+    
+    /**
+     * Construct the exception
+     *
+     * @param  string $msg
+     * @param  int $code
+     * @param  Exception $previous
+     * @return void
+     */
+    public function __construct($msg = '', $code = 0, Exception $previous = null)
     {
-        /**
-         * @var null|Exception
-         */
-        private $_previous = null;
-
-        /**
-         * Construct the exception
-         *
-         * @param  string $msg
-         * @param  int $code
-         * @param  Exception $previous
-         * @return void
-         */
-        public function __construct($msg = '', $code = 0, Exception $previous = null)
-        {
+        if (version_compare(PHP_VERSION, '5.3.0', '>=')) {
+            parent::__construct($msg, (int) $code, $previous);
+        } else {
             parent::__construct($msg, (int) $code);
             $this->_previous = $previous;
         }
-
-        /**
-         * Returns previous Exception
-         *
-         * @return Exception|null
-         */
-        final public function getPrevious()
-        {
-            return $this->_previous;
+    }
+    
+    /**
+     * Proxy for undefined methods
+     * 
+     * @param  string $method
+     * @param  array  $params
+     * @return mixed
+     */
+    public function __call($method, $params)
+    {
+        if (strtolower($method) == 'getprevious') {
+            return $this->_getPrevious();
         }
-
-        /**
-         * String representation of the exception
-         *
-         * @return string
-         */
-        public function __toString()
-        {
-            if (null !== ($e = $this->getPrevious())) {
-                return $e->__toString() 
-                    . "\n\nNext " 
-                    . parent::__toString();
-            }
-            return parent::__toString();
-        }
+        return call_user_func_array(array($this, $method), $params);
     }
-} else {
+    
     /**
-     * @category   Zend
-     * @package    Zend
-     * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
-     * @license    http://framework.zend.com/license/new-bsd     New BSD License
+     * String representation of the exception
+     *
+     * @return string
      */
-    class Zend_Exception extends Exception
+    public function __toString()
     {
-        public function __construct($msg = '', $code = 0, Exception $previous = null)
-        {
-            if (!is_int($code)) {
-                $code = (int) $code;
-            }
-            parent::__construct($msg, $code, $previous);
+        if (null !== ($e = $this->getPrevious())) {
+            return $e->__toString() 
+                . "\n\nNext " 
+                . parent::__toString();
         }
+        return parent::__toString();
     }
+    
+    /**
+     * Returns previous Exception
+     * 
+     * @return null|Exception
+     */
+    private function _getPrevious()
+    {
+        return $this->_previous;
+    }
 }

