vrana Wed Dec 29 07:46:06 2004 EDT Added files: /phpdoc/en/language exceptions.xml
Removed files: /phpdoc/en/language/oop5 exceptions.xml Modified files: /phpdoc manual.xml.in /phpdoc/en/appendices reserved.xml /phpdoc/en/language oop5.xml /phpdoc/en/language/oop5 basic.xml /phpdoc/en/reference/dom reference.xml /phpdoc/en/reference/errorfunc/functions set-exception-handler.xml Log: Move exceptions from objects (bug #31250)
http://cvs.php.net/diff.php/phpdoc/manual.xml.in?r1=1.200&r2=1.201&ty=u Index: phpdoc/manual.xml.in diff -u phpdoc/manual.xml.in:1.200 phpdoc/manual.xml.in:1.201 --- phpdoc/manual.xml.in:1.200 Fri Dec 24 22:14:39 2004 +++ phpdoc/manual.xml.in Wed Dec 29 07:46:04 2004 @@ -2,7 +2,7 @@ <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "@srcdir@/dtds/dbxml-4.1.2/docbookx.dtd" [ -<!-- $Revision: 1.200 $ --> +<!-- $Revision: 1.201 $ --> <!-- Add translated specific definitions and snippets --> <!ENTITY % language-defs SYSTEM "@srcdir@/@LANGDIR@/language-defs.ent"> @@ -78,6 +78,7 @@ &language.functions; &language.oop; &language.oop5; + &language.exceptions; &language.references; </part> http://cvs.php.net/diff.php/phpdoc/en/appendices/reserved.xml?r1=1.53&r2=1.54&ty=u Index: phpdoc/en/appendices/reserved.xml diff -u phpdoc/en/appendices/reserved.xml:1.53 phpdoc/en/appendices/reserved.xml:1.54 --- phpdoc/en/appendices/reserved.xml:1.53 Wed Dec 29 07:06:49 2004 +++ phpdoc/en/appendices/reserved.xml Wed Dec 29 07:46:05 2004 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.53 $ --> +<!-- $Revision: 1.54 $ --> <appendix id="reserved"> <title>List of Reserved Words</title> @@ -240,15 +240,15 @@ <link linkend="language.oop5.cloning">clone</link> (PHP 5) </entry> <entry> - <link linkend="language.oop5.exceptions">try</link> (PHP 5) + <link linkend="language.exceptions">try</link> (PHP 5) </entry> <entry> - <link linkend="language.oop5.exceptions">catch</link> (PHP 5) + <link linkend="language.exceptions">catch</link> (PHP 5) </entry> </row> <row> <entry> - <link linkend="language.oop5.exceptions">throw</link> (PHP 5) + <link linkend="language.exceptions">throw</link> (PHP 5) </entry> <entry> <link linkend="migration.old-function">cfunction</link> (PHP 4 only) http://cvs.php.net/diff.php/phpdoc/en/language/oop5.xml?r1=1.9&r2=1.10&ty=u Index: phpdoc/en/language/oop5.xml diff -u phpdoc/en/language/oop5.xml:1.9 phpdoc/en/language/oop5.xml:1.10 --- phpdoc/en/language/oop5.xml:1.9 Fri Oct 29 07:28:21 2004 +++ phpdoc/en/language/oop5.xml Wed Dec 29 07:46:06 2004 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.9 $ --> +<!-- $Revision: 1.10 $ --> <chapter id="language.oop5"> <title>Classes and Objects (PHP 5)</title> @@ -25,7 +25,6 @@ &language.oop5.patterns; &language.oop5.magic; &language.oop5.final; - &language.oop5.exceptions; &language.oop5.cloning; &language.oop5.object-comparison; &language.oop5.reflection; http://cvs.php.net/diff.php/phpdoc/en/language/oop5/basic.xml?r1=1.8&r2=1.9&ty=u Index: phpdoc/en/language/oop5/basic.xml diff -u phpdoc/en/language/oop5/basic.xml:1.8 phpdoc/en/language/oop5/basic.xml:1.9 --- phpdoc/en/language/oop5/basic.xml:1.8 Tue Dec 28 09:39:19 2004 +++ phpdoc/en/language/oop5/basic.xml Wed Dec 29 07:46:06 2004 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.8 $ --> +<!-- $Revision: 1.9 $ --> <sect1 id="language.oop5.basic"> <title>The Basics</title> @@ -44,7 +44,7 @@ assigned to a variable. An object will always be assigned when creating a new object unless the object has a <link linkend="language.oop5.decon">constructor</link> defined that throws an - <link linkend="language.oop5.exceptions">exception</link> on error. + <link linkend="language.exceptions">exception</link> on error. </para> <example> <title>Creating an instance</title> http://cvs.php.net/diff.php/phpdoc/en/reference/dom/reference.xml?r1=1.11&r2=1.12&ty=u Index: phpdoc/en/reference/dom/reference.xml diff -u phpdoc/en/reference/dom/reference.xml:1.11 phpdoc/en/reference/dom/reference.xml:1.12 --- phpdoc/en/reference/dom/reference.xml:1.11 Mon Dec 27 11:53:35 2004 +++ phpdoc/en/reference/dom/reference.xml Wed Dec 29 07:46:06 2004 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.11 $ --> +<!-- $Revision: 1.12 $ --> <reference id="ref.dom"> <title>DOM Functions</title> <titleabbrev>DOM</titleabbrev> @@ -683,7 +683,7 @@ when an operation is impossible to perform for logical reasons. </para> <para> - See also <xref linkend="language.oop5.exceptions"/>. + See also <xref linkend="language.exceptions"/>. </para> <section id='dom.class.domexception.properties'> &reftitle.properties; http://cvs.php.net/diff.php/phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml?r1=1.4&r2=1.5&ty=u Index: phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml diff -u phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml:1.4 phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml:1.5 --- phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml:1.4 Mon Nov 8 07:10:20 2004 +++ phpdoc/en/reference/errorfunc/functions/set-exception-handler.xml Wed Dec 29 07:46:06 2004 @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="iso-8859-1"?> -<!-- $Revision: 1.4 $ --> +<!-- $Revision: 1.5 $ --> <refentry id="function.set-exception-handler"> <refnamediv> <refname>set_exception_handler</refname> @@ -88,7 +88,7 @@ <function>restore_exception_handler</function> <function>restore_error_handler</function> <function>error_reporting</function>&listendand; - <link linkend="language.oop5.exceptions">PHP 5 Exceptions</link> + <link linkend="language.exceptions">PHP 5 Exceptions</link> </para> </refsect1> </refentry> http://cvs.php.net/co.php/phpdoc/en/language/exceptions.xml?r=1.1&p=1 Index: phpdoc/en/language/exceptions.xml +++ phpdoc/en/language/exceptions.xml <?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.1 $ --> <chapter id="language.exceptions"> <title>Exceptions</title> <para> PHP 5 has an exception model similar to that of other programming languages. An exception can be thrown, try and caught within PHP. A Try block must include at least one catch block. Multiple catch blocks can be used to catch different classtypes; execution will continue after that last catch block defined in sequence. Exceptions can be thrown within catch blocks. </para> <para> When an exception is thrown, code following the statement will not be executed and PHP will attempt to find the first matching catch block. If an exception is not caught a PHP Fatal Error will be issued with an Uncaught Exception message, unless there has been a handler defined with <function>set_exception_handler</function>. </para> <example> <title>Throwing an Exception</title> <programlisting role="php"> <![CDATA[ <?php try { $error = 'Always throw this error'; throw new Exception($error); // Code following an exception is not executed. echo 'Never executed'; } catch (Exception $e) { echo 'Caught exception: ', $e->getMessage(), "\n"; } // Continue execution echo 'Hello World'; ?> ]]> </programlisting> </example> <sect1 id="language.exceptions.extending"> <title>Extending Exceptions</title> <para> A User defined Exception class can be defined by extending the built-in Exception class. The members and properties below, show what is accessible within the child class that derives from the built-in Exception class. </para> <example> <title>The Built in Exception class</title> <programlisting role="php"> <![CDATA[ <?php class Exception { protected $message = 'Unknown exception'; // exception message protected $code = 0; // user defined exception code protected $file; // source filename of exception protected $line; // source line of exception function __construct($message = null, $code = 0); final function getMessage(); // message of exception final function getCode(); // code of exception final function getFile(); // source filename final function getLine(); // source line final function getTrace(); // an array of the backtrace() final function getTraceAsString(); // formated string of trace /* Overrideable */ function __toString(); // formated string for display } ?> ]]> </programlisting> </example> <para> If a class extends the built-in Exception class and re-defines the <link linkend="language.oop5.decon">constructor</link>, it is highly recomended that it also call <link linkend="language.oop5.paamayim-nekudotayim">parent::__construct()</link> to ensure all available data has been properly assigned. The <link linkend="language.oop5.magic">__toString()</link> method can be overriden to provide a custom output when the object is presented as a string. </para> <example> <title>Extending the Exception class</title> <programlisting role="php"> <![CDATA[ <?php /** * Define a custom exception class */ class MyException extends Exception { // Redefine the exception so message isn't optional public function __construct($message, $code = 0) { // some code // make sure everything is assigned properly parent::__construct($message, $code); } // custom string representation of object */ public function __toString() { return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; } public function customFunction() { echo "A Custom function for this type of exception\n"; } } /** * Create a class to test the exception */ class TestException { public $var; const THROW_NONE = 0; const THROW_CUSTOM = 1; const THROW_DEFAULT = 2; function __construct($avalue = self::THROW_NONE) { switch ($avalue) { case self::THROW_CUSTOM: // throw custom exception throw new MyException('1 is an invalid parameter', 5); break; case self::THROW_DEFAULT: // throw default one. throw new Exception('2 isnt allowed as a parameter', 6); break; default: // No exception, object will be created. $this->var = $avalue; break; } } } // Example 1 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (MyException $e) { // Will be caught echo "Caught my exception\n", $e; $e->customFunction(); } catch (Exception $e) { // Skipped echo "Caught Default Exception\n", $e; } // Continue execution var_dump($o); echo "\n\n"; // Example 2 try { $o = new TestException(TestException::THROW_DEFAULT); } catch (MyException $e) { // Doesn't match this type echo "Caught my exception\n", $e; $e->customFunction(); } catch (Exception $e) { // Will be caught echo "Caught Default Exception\n", $e; } // Continue execution var_dump($o); echo "\n\n"; // Example 3 try { $o = new TestException(TestException::THROW_CUSTOM); } catch (Exception $e) { // Will be caught echo "Default Exception caught\n", $e; } // Continue execution var_dump($o); echo "\n\n"; // Example 4 try { $o = new TestException(); } catch (Exception $e) { // Skipped, no exception echo "Default Exception caught\n", $e; } // Continue execution var_dump($o); echo "\n\n"; ?> ]]> </programlisting> </example> </sect1> </chapter> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"../../manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->