<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Error-Handling on Roman Dushko - Personal blog</title><link>https://www.rodush.com/tags/error-handling/</link><description>Recent content in Error-Handling on Roman Dushko - Personal blog</description><image><title>Roman Dushko - Personal blog</title><url>https://www.rodush.com/images/rodush-og.png</url><link>https://www.rodush.com/images/rodush-og.png</link></image><generator>Hugo</generator><language>en</language><lastBuildDate>Sun, 20 Mar 2011 20:04:48 +0000</lastBuildDate><atom:link href="https://www.rodush.com/tags/error-handling/index.xml" rel="self" type="application/rss+xml"/><item><title>Отслеживание ошибок и уведомлений PHP</title><link>https://www.rodush.com/2011/03/%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%B8-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-php/</link><pubDate>Sun, 20 Mar 2011 20:04:48 +0000</pubDate><guid>https://www.rodush.com/2011/03/%D0%BE%D1%82%D1%81%D0%BB%D0%B5%D0%B6%D0%B8%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%BE%D1%88%D0%B8%D0%B1%D0%BE%D0%BA-%D0%B8-%D1%83%D0%B2%D0%B5%D0%B4%D0%BE%D0%BC%D0%BB%D0%B5%D0%BD%D0%B8%D0%B9-php/</guid><description>&lt;p&gt;Иногда бывает необходимо отследить некритические ошибки, возникающие в работе РНР скрипта (&lt;code&gt;E_WARNING&lt;/code&gt;, &lt;code&gt;E_NOTICE&lt;/code&gt;, etc.) и куда-то их грамотно собрать.&lt;/p&gt;
&lt;p&gt;К примеру, мы хотим сделать валидацию XML файла с помощью &lt;code&gt;XMLReader&lt;/code&gt; (кстати, об этом, думаю, можно рассказать в отдельной публикации). В случае, если XML невалидный, то выбросить исключение, прекратив дальнейшую работу.&lt;/p&gt;
&lt;p&gt;Все ошибки валидации выдаются через &amp;ldquo;WARNING&amp;rdquo;-сообщения.&lt;/p&gt;
&lt;p&gt;Для того, чтобы получить такое сообщение можно поступить следующим образом:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Track the errors (to be able to store the PHP error message)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;$oldConfigValue &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ini_set&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;track_errors&amp;#39;&lt;/span&gt;, &lt;span style="color:#e6db74"&gt;&amp;#39;1&amp;#39;&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;while&lt;/span&gt; ($xmlReader&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;read&lt;/span&gt;()) {} &lt;span style="color:#75715e"&gt;// полностью читаем XML
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; (&lt;span style="color:#f92672"&gt;!&lt;/span&gt;$xmlReader&lt;span style="color:#f92672"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;isValid&lt;/span&gt;())
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;throw&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;new&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;Exception&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;XML does not conform to schema. &amp;#39;&lt;/span&gt; &lt;span style="color:#f92672"&gt;.&lt;/span&gt; $php_errormsg);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// Set back track_errors setting:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a6e22e"&gt;ini_set&lt;/span&gt;(&lt;span style="color:#e6db74"&gt;&amp;#39;track_errors&amp;#39;&lt;/span&gt;, $oldConfigValue);
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Здесь мы сначала устанавливаем директиву РНР &lt;code&gt;'track_errors'&lt;/code&gt; (Отслеживать ошибки) в TRUE (1). А далее — magic! 🙂&lt;/p&gt;</description></item></channel></rss>