cvs: phpdoc /pl/features error-handling.xml

From: Date: Mon, 25 Mar 2002 17:48:38 +0000
Subject: cvs: phpdoc /pl/features error-handling.xml
Groups: php.doc 
Request: Send a blank email to phpdoc+get-969343467@lists.php.net to get a copy of this message
slawek Mon Mar 25 12:48:38 2002 EDT Added files: /phpdoc/pl/features error-handling.xml Log: Initial translation.

Index: phpdoc/pl/features/error-handling.xml +++ phpdoc/pl/features/error-handling.xml <?xml version="1.0" encoding="iso-8859-2"?> <!-- EN-Revision: 1.25 Maintainer: slawek Status: ready --> <!-- $Revision: 1.1 $ --> <chapter id="features.error-handling"> <title>Obs³uga b³êdów</title> <para> W PHP istnieje kilka rodzajów b³êdów i ostrze¿eñ. Oto one: <table> <title>Rodzaje b³êdów PHP</title> <tgroup cols="4"> <thead> <row> <entry>Warto¶æ</entry> <entry>Sta³a</entry> <entry>Opis</entry> <entry>Uwagi</entry> </row> </thead> <tbody> <row> <entry>1</entry> <entry>E_ERROR</entry> <entry>krytyczne b³êdy podczas wykonywania</entry> <entry></entry> </row> <row> <entry>2</entry> <entry>E_WARNING</entry> <entry>ostrze¿enia podczas wykonania (nie b³êdy krytyczne)</entry> <entry></entry> </row> <row> <entry>4</entry> <entry>E_PARSE</entry> <entry>b³êdy sk³adniowe podczas kompilacji</entry> <entry></entry> </row> <row> <entry>8</entry> <entry>E_NOTICE</entry> <entry>uwagi podczas wykonania (mniej powa¿ne ni¿ ostrze¿enia)</entry> <entry></entry> </row> <row> <entry>16</entry> <entry>E_CORE_ERROR</entry> <entry>krytyczne b³êdy podczas uruchamiania PHP</entry> <entry>tylko PHP 4</entry> </row> <row> <entry>32</entry> <entry>E_CORE_WARNING</entry> <entry>ostrze¿enia (nie b³êdy krytyczne) podczas uruchamiania PHP</entry> <entry>tylko PHP 4</entry> </row> <row> <entry>64</entry> <entry>E_COMPILE_ERROR</entry> <entry>krytyczne b³êdy podczas kompilacji</entry> <entry>tylko PHP 4</entry> </row> <row> <entry>128</entry> <entry>E_COMPILE_WARNING</entry> <entry>ostrze¿enia podczas kompilacji (nie b³êdy krytyczne)</entry> <entry>tylko PHP 4</entry> </row> <row> <entry>256</entry> <entry>E_USER_ERROR</entry> <entry>komunikat b³êdu wywo³any przez u¿ytkownika</entry> <entry>tylko PHP 4</entry> </row> <row> <entry>512</entry> <entry>E_USER_WARNING</entry> <entry>komunikat ostrze¿enia wywo³any przez u¿ytkownika</entry> <entry>tylko PHP 4</entry> </row> <row> <entry>1024</entry> <entry>E_USER_NOTICE</entry> <entry>uwaga wywo³ana przez u¿ytkownika</entry> <entry>tylko PHP 4</entry> </row> <row> <entry></entry> <entry>E_ALL</entry> <entry>wszystkie powy¿sze, je¶li obs³ugiwane</entry> <entry></entry> </row> </tbody> </tgroup> </table> </para> <para> Powy¿sze warto¶ci (zarówno liczbowe jak i symboliczne) tworz± maskê bitow±, okre¶laj±c±, które b³êdy maj± byæ zg³aszane. Mo¿esz u¿yæ <link linkend="language.operators.bitwise">operatorów bitowych</link>, by po³±czyæ te warto¶ci, lub zamaskowaæ niektóre typy b³êdów. Nale¿y podkre¶liæ, ¿e jedynie operatory '|', '~', '!', i '&amp;' bêd± akceptowane przez <filename>php.ini</filename>, natomiast ¿aden z nich nie bêdzie akceptowany przez <filename>php3.ini</filename>. </para> <para> W PHP4, <link linkend="ini.error-reporting">error_reporting</link> (zg³aszanie b³êdów) jest domy¶lnie ustawione na <literal>E_ALL &amp; ~E_NOTICE</literal>, co powoduje wy¶wietlanie wszystkich b³êdów i ostrze¿eñ, z wyj±tkiem kategorii E_NOTICE. W PHP3, domy¶lne ustawienie <literal>(E_ERROR | E_WARNING | E_PARSE)</literal>, powoduje dok³adnie to samo. Bior±c jednak pod uwagê, i¿ <filename>php3.ini</filename> nie obs³uguje sta³ych, <link linkend="ini.error-reporting">error_reporting</link> musi zostaæ podane liczbowo, dlatego wynosi <literal>7</literal>. </para> <para> Pocz±tkowa warto¶æ mo¿e byæ ustawiona dyrektyw± <link linkend="ini.error-reporting">error_reporting</link> w pliku ini, lub w pliku <filename>httpd.conf</filename> serwera Apache przy u¿yciu dyrektywy php_error_reporting (lub php3_error_reporting w PHP3), lub z poziomu samego skryptu przy u¿yciu funkcji <function>error_reporting</function>. </para> <warning> <para> W przypadku aktualizowania skryptów b±d¼ serwera z PHP 3 do PHP 4, nale¿y sprawdziæ ustawienia zg³aszania b³êdów, oraz wywo³ania funkcji <function>error_reporting</function>. Istnieje bowiem mo¿liwo¶æ przypadkowego zablokowania zg³aszania nowych typów b³êdów, w szczególno¶ci E_COMPILE_ERROR. Mo¿e to prowadziæ do wy¶wietlania pustych dokumentów, bez jakiejkolwiek informacji o b³êdzie, ani miejscu, gdzie nale¿y szukaæ problemu. </para> </warning> <para> Wszystkie <link linkend="language.expressions">wyra¿enia PHP</link> mog± byæ poprzedzane znakiem "@", który wy³±cza zg³aszanie b³êdów dla nastêpuj±cego po nim wyra¿enia. Je¶li podczas przetwarzania wyra¿enia wyst±pi b³±d, a w³±czona jest opcja <link linkend="ini.track-errors">track_errors</link>, to komunikat b³êdu zostanie umieszczony w zmiennej globalnej <literal>$php_errormsg</literal>. </para> <note> <para> <link linkend="language.operators.errorcontrol">Operator kontroli b³êdów @</link> nie zablokuje komunikatu, który jest wynikiem b³êdu sk³adniowego. </para> </note> <warning> <para> <link linkend="language.operators.errorcontrol">Operator kontroli b³êdów @</link> zablokuje równie¿ zg³aszanie b³êdów krytycznych, powoduj±cych przerwanie wykonywania skryptu. Je¶li zatem u¿yjesz operatora <link linkend="language.operators.errorcontrol">@</link> do wy³±czenia pokazywania b³êdów konkretnej funkcji, która b±d¼ nie istnieje, b±d¼ pope³niono b³±d przy wpisywaniu jej nazwy, skrypt przerwie dzia³anie w tym miejscu, bez poinformowania o przyczynach. </para> </warning> <para> Poni¿ej zamieszczamy przyk³ad wykorzystania obs³ugi b³êdów w PHP. Tworzymy funkcjê obs³ugi b³êdów, która zapisuje informacje do pliku (u¿ywaj±c formatu XML) i w przypadku wyst±pienia b³êdu krytycznego, wysy³a maila do programisty. <example> <title>Wykorzystanie obs³ugi b³êdów</title> <programlisting role="php"> <![CDATA[ <?php // bêdziemy korzystaæ z w³asnej obs³ugi b³êdów error_reporting(0); // zdefiniowana przez nas funkcja obs³ugi b³êdów function userErrorHandler ($errno, $errmsg, $filename, $linenum, $vars) { // czas wyst±pienia b³êdu $dt = date("Y-m-d H:i:s (T)"); // tablicja asocjacyjna rodzajów b³êdów. // w rzeczywisto¶ci bêdziemy braæ pod // uwagê b³êdy are 2,8,256,512 i 1024 $errortype = array ( 1 => "B³±d", 2 => "Ostrze¿enie", 4 => "B³±d sk³adni", 8 => "Uwaga", 16 => "B³±d PHP (core)", 32 => "Ostrze¿enie PHP (core)", 64 => "B³±d kompilacji", 128 => "Ostrze¿enie kompilatora", 256 => "B³±d u¿ytkownika", 512 => "Ostrze¿enie u¿ytkownika", 1024=> "Uwaga u¿ytkownika" ); // b³êdy dla których zapisywany bêdzie stan zmiennych $user_errors = array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE); $err = "<errorentry>\n"; $err .= "\t<datetime>".$dt."</datetime>\n"; $err .= "\t<errornum>".$errno."</errornum>\n"; $err .= "\t<errortype>".$errortype[$errno]."</errortype>\n"; $err .= "\t<errormsg>".$errmsg."</errormsg>\n"; $err .= "\t<scriptname>".$filename."</scriptname>\n"; $err .= "\t<scriptlinenum>".$linenum."</scriptlinenum>\n"; if (in_array($errno, $user_errors)) $err .= "\t<vartrace>".wddx_serialize_value($vars,"Variables")."</vartrace>\n"; $err .= "</errorentry>\n\n"; // dla testów // echo $err; // zapisz w dzienniku b³êdów i wy¶lij mailem informacjê o b³êdzie u¿ytkownika error_log($err, 3, "/usr/local/php4/error.log"); if ($errno == E_USER_ERROR) mail("phpdev@example.com","Krytyczny b³±d u¿ytkownika",$err); } function distance ($vect1, $vect2) { if (!is_array($vect1) || !is_array($vect2)) { trigger_error("Niepoprawne parametry, oczekiwano tablic", E_USER_ERROR); return NULL; } if (count($vect1) != count($vect2)) { trigger_error("Wektory musz± mieæ jednakowy rozmiar", E_USER_ERROR); return NULL; } for ($i=0; $i<count($vect1); $i++) { $c1 = $vect1[$i]; $c2 = $vect2[$i]; $d = 0.0; if (!is_numeric($c1)) { trigger_error("Wspó³rzêdna $i w wektorze 1 nie jest liczb±, przyjmujê zero", E_USER_WARNING); $c1 = 0.0; } if (!is_numeric($c2)) { trigger_error("Wspó³rzêdna $i w wektorze 2 nie jest liczb±, przyjmujê zero", E_USER_WARNING); $c2 = 0.0; } $d += $c2*$c2 - $c1*$c1; } return sqrt($d); } $old_error_handler = set_error_handler("userErrorHandler"); // niezdefiniowana sta³a, generuje b³±d $t = I_AM_NOT_DEFINED; // definicja kilku wektorów $a = array(2,3,"foo"); $b = array(5.5, 4.3, -1.6); $c = array (1,-3); // generujemy b³±d u¿ytkownika $t1 = distance($c,$b)."\n"; // ... i jeszcze jeden $t2 = distance($b,"nie jestem tablic±")."\n"; // generujemy ostrze¿enie $t3 = distance($a,$b)."\n"; ?> ]]> </programlisting> </example> To jedynie prosty przyk³ad, ilustruj±cy sposób u¿ycia <link linkend="ref.errorfunc">Funkcji obs³ugi b³êdów i logowania</link>. </para> <para> Patrz tak¿e: <function>error_reporting</function>, <function>error_log</function>, <function>set_error_handler</function>, <function>restore_error_handler</function>, <function>trigger_error</function>, <function>user_error</function> </para> </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 -->
« previous php.doc (#969343467) next »