<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3915007</guid>
        <pubDate>Tue, 17 Dec 2024 12:07:48 +0000</pubDate>
        <title>Ошибки IO не ловятся исключениями</title>
        <link>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3915007</link>
        <description><![CDATA[H g: <strong class='tag-b'>macomics</strong>, <strong class='tag-b'>D_KEY</strong> теперь понятно )) спасибо за ответы]]></description>
        <author>H g</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3915003</guid>
        <pubDate>Tue, 17 Dec 2024 10:32:31 +0000</pubDate>
        <title>Ошибки IO не ловятся исключениями</title>
        <link>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3915003</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454656&view=findpost&p=3914998'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>H g &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T08:14:56+00:00">17.12.24, 08:14</time></span><div class='quote '>или писать за пределы</div></div><br>
А так вообще бывает? На диске место может закончится -- слышал. Про квоты слышал. А про писать за пределы файла -- что-то новое. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-17T10:34:57+00:00">17.12.24, 10:34</time></span></span><br>
И вообще. Прежде стоит изучить работу функций, которыми пользуетесь, а потом писать код. Попытка ловить исключения, которых не будет -- не сработает. А вот прочитав про возвращаемые значения сразу можно понять суть работы и сигнализацию об ошибках.]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3915000</guid>
        <pubDate>Tue, 17 Dec 2024 09:38:33 +0000</pubDate>
        <title>Ошибки IO не ловятся исключениями</title>
        <link>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3915000</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=454656&view=findpost&p=3914998'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>H g &#064; <time class="tag-quote__quoted-time" datetime="2024-12-17T08:14:56+00:00">17.12.24, 08:14</time></span><div class='quote '>try - catch(...) в моем понимании для того, чтобы отлавливать исключительные ситуации, попытка читать из файла за его пределами или писать за пределы - на мой взгляд и есть исключительная ситуация.</div></div><br>
Но не на взгляд API, которое вы используете  :) <br>
<br>
Это вообще API из Си, в котором нет исключительных ситуаций.]]></description>
        <author>D_KEY</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3914998</guid>
        <pubDate>Tue, 17 Dec 2024 08:14:56 +0000</pubDate>
        <title>Ошибки IO не ловятся исключениями</title>
        <link>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3914998</link>
        <description><![CDATA[H g: try - catch(...) в моем понимании для того, чтобы отлавливать исключительные ситуации, попытка читать из файла за его пределами или писать за пределы - на мой взгляд и есть исключительная ситуация.]]></description>
        <author>H g</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3914997</guid>
        <pubDate>Tue, 17 Dec 2024 07:54:41 +0000</pubDate>
        <title>Ошибки IO не ловятся исключениями</title>
        <link>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3914997</link>
        <description><![CDATA[macomics: Так при чтении просто смотрите на количество прочитанных байт из файла, что вам fread возвращает]]></description>
        <author>macomics</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3914996</guid>
        <pubDate>Tue, 17 Dec 2024 06:35:40 +0000</pubDate>
        <title>Ошибки IO не ловятся исключениями</title>
        <link>https://forum.sources.ru/index.php?showtopic=454656&amp;view=findpost&amp;p=3914996</link>
        <description><![CDATA[H g: Вопрос по использованию try - catch(...)<br>
У меня есть такой пример, записываю и читаю с файла:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void DataWrite()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int i, j;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FILE *f;</div><div class="code_line">&nbsp;&nbsp; &nbsp;f = fopen(e::filename, &quot;wb&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;fwrite(&amp;e::elementubound, sizeof(e::elementubound), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (i=0; i&#60;e::elementubound; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fwrite(&amp;e::element[i].param, sizeof(e::element[i].param), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fwrite(&amp;e::element[i].value, sizeof(e::element[i].value), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;fflush(f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;fclose(f);</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void DataRead()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int i, j;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FILE *f;</div><div class="code_line">&nbsp;&nbsp; &nbsp;f = fopen(e::filename, &quot;rb&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;fread(&amp;e::elementubound, sizeof(e::elementubound), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (i=0; i&#60;e::elementubound; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fread(&amp;e::element[i].param, sizeof(e::element[i].param), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fread(&amp;e::element[i].value, sizeof(e::element[i].value), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;fclose(f);</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
Если я своей программой записываю и потом считываю - никаких проблем.<br>
Проблемы появляются тогда, когда происходит открытие файла с совпадающим расширением. т.е. программа выходит за пределы отведенной ей памяти.<br>
Попробовал использовать try - catch(...) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-17T06:38:36+00:00">17.12.24, 06:38</time></span></span><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void DataReadNew()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;int i, j;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FILE *f;</div><div class="code_line">&nbsp;&nbsp; &nbsp;try</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;f = fopen(e::filename, &quot;rb&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fread(&amp;e::elementubound, sizeof(e::elementubound), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (i=0; i&#60;e::elementubound; i++)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fread(&amp;e::element[i].param, sizeof(e::element[i].param), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;fread(&amp;e::element[i].value, sizeof(e::element[i].value), 1, f);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;fclose(f);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;catch(...)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;MessageBox(e::formhwnd, &quot;Error file open - File format not valid&quot;, &quot; Message&quot;, MB_OK);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2024-12-17T06:39:55+00:00">17.12.24, 06:39</time></span></span><br>
и вместо сообщения &quot;Error file open - File format not valid&quot; получаю зависание программы, что не так ?<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Эта тема была разделена из темы &quot;<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=453679' target='_blank'>&quot;обработка исключений&quot; vs &quot;обработка кодов возврата&quot;</a>&quot;</span></span>]]></description>
        <author>H g</author>
        <category>C/C++: Общие вопросы</category>
      </item>
	
      </channel>
      </rss>
	