0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: c++, исключения, exception</p>
1
<p>Теги: c++, исключения, exception</p>
2
<p>В языке C++ исключения описываются типом<strong>exception</strong>, определенном в заголовочном файле<strong><exception></strong>. Рассмотрим обработку исключений на примере:</p>
2
<p>В языке C++ исключения описываются типом<strong>exception</strong>, определенном в заголовочном файле<strong><exception></strong>. Рассмотрим обработку исключений на примере:</p>
3
<p>Итак, объект типа<strong>std::exception</strong>передается оператору<strong>throw</strong>. Этот объект инициализируется строкой "Division by zero!", передающей информацию о характере ошибки.</p>
3
<p>Итак, объект типа<strong>std::exception</strong>передается оператору<strong>throw</strong>. Этот объект инициализируется строкой "Division by zero!", передающей информацию о характере ошибки.</p>
4
<p>Если вы хотите отловить исключения типа<strong>exception</strong>, необходимо в выражении<strong>catch</strong>определить переменную этого типа:</p>
4
<p>Если вы хотите отловить исключения типа<strong>exception</strong>, необходимо в выражении<strong>catch</strong>определить переменную этого типа:</p>
5
<p>В данном случае<strong>err</strong>представляет переменную exception-типа. При этом совсем необязательно определять переменную именно в качестве константной ссылки, так как можно определить ее и следующим образом:</p>
5
<p>В данном случае<strong>err</strong>представляет переменную exception-типа. При этом совсем необязательно определять переменную именно в качестве константной ссылки, так как можно определить ее и следующим образом:</p>
6
<p>Если же у вас нет намерения применять эту переменную в блоке<strong>catch</strong>, можно просто указать тип исключения:</p>
6
<p>Если же у вас нет намерения применять эту переменную в блоке<strong>catch</strong>, можно просто указать тип исключения:</p>
7
<p>Кроме того, важно отметить различия в реализации компиляторов. К примеру, Visual Studio позволит инициализировать объект<strong>exception</strong>с помощью строки. К примеру, вы можете передать сообщение об ошибке:</p>
7
<p>Кроме того, важно отметить различия в реализации компиляторов. К примеру, Visual Studio позволит инициализировать объект<strong>exception</strong>с помощью строки. К примеру, вы можете передать сообщение об ошибке:</p>
8
<p>А уже посредством метода what() в блоке catch есть возможность получить переданное сообщение и, например, осуществить его вывод на консоль:</p>
8
<p>А уже посредством метода what() в блоке catch есть возможность получить переданное сообщение и, например, осуществить его вывод на консоль:</p>
9
<p>Правда, в том же g++ данный код работать не будет, ведь тип<strong>exception</strong>для g++ нельзя инициализировать строкой.</p>
9
<p>Правда, в том же g++ данный код работать не будет, ведь тип<strong>exception</strong>для g++ нельзя инициализировать строкой.</p>
10
<p><em>По материалам<a>https://metanit.com/</a>.</em></p>
10
<p><em>По материалам<a>https://metanit.com/</a>.</em></p>
11
11