Перенос предложения: голоса +11, -7
Автор идеи: Игорь Шаповал
В С++17 удалили с стандарта Dynamic exception specification. Для того чтобы использовать свои исключения, мы должны создать класс и унаследоваться от std::exception. Мы должны переопределить метод what(). Но в стандарте мы можем кидать исключения еще примитивного типа.
try {
throw 5;
} catch (...) {
cout << "what does it mean?" << endl;
}
На практике исключения такого типа безполезны. Во-первых, если как в коде выше, то все понятно. Во-вторых, если это исключение брошеное в какой-то библиотеке, где мы имеем только заголовочные файлы. Это кошмар! Во-третих, каждый программист согласится, что это плохая техника написания кода. Предлагаю удалить с стандарта кидания исключения примитивного типа и оставить только кидания типа класса.
try {
routine();
} catch (const understand_exception& e) {
cout << "Catch understand exception: " << e.what() << endl;
}
Надеюсь что в стандарт добавят stacktrace. В Java stacktrace используется с исключениями с начала добавления исключения. Хотелось в С++ иметь также. В С++17 начали чистить языковые и библиотечные возможности. Надеюсь что это также попадет под чистку.
Перенос предложения: голоса +11, -7
Автор идеи: Игорь Шаповал
В С++17 удалили с стандарта Dynamic exception specification. Для того чтобы использовать свои исключения, мы должны создать класс и унаследоваться от std::exception. Мы должны переопределить метод what(). Но в стандарте мы можем кидать исключения еще примитивного типа.
На практике исключения такого типа безполезны. Во-первых, если как в коде выше, то все понятно. Во-вторых, если это исключение брошеное в какой-то библиотеке, где мы имеем только заголовочные файлы. Это кошмар! Во-третих, каждый программист согласится, что это плохая техника написания кода. Предлагаю удалить с стандарта кидания исключения примитивного типа и оставить только кидания типа класса.
Надеюсь что в стандарт добавят stacktrace. В Java stacktrace используется с исключениями с начала добавления исключения. Хотелось в С++ иметь также. В С++17 начали чистить языковые и библиотечные возможности. Надеюсь что это также попадет под чистку.