Тип exception в C++

В языке C++ исключения описываются типом exception, определенном в заголовочном файле <exception>. Рассмотрим обработку исключений на примере:

Итак, объект типа std::exception передается оператору throw. Этот объект инициализируется строкой "Division by zero!", передающей информацию о характере ошибки.

Если вы хотите отловить исключения типа exception, необходимо в выражении catch определить переменную этого типа:

В данном случае err представляет переменную exception-типа. При этом совсем необязательно определять переменную именно в качестве константной ссылки, так как можно определить ее и следующим образом:

Если же у вас нет намерения применять эту переменную в блоке catch, можно просто указать тип исключения:

Кроме того, важно отметить различия в реализации компиляторов. К примеру, Visual Studio позволит инициализировать объект exception с помощью строки. К примеру, вы можете передать сообщение об ошибке:

А уже посредством метода what() в блоке catch есть возможность получить переданное сообщение и, например, осуществить его вывод на консоль:

Правда, в том же g++ данный код работать не будет, ведь тип exception для g++ нельзя инициализировать строкой.

По материалам https://metanit.com/.