Отличие классов exception и runtime_error в C++ заключается в их назначении:
- std::exception — базовый класс всех исключений стандартной библиотеки. 23 Используется как базовый класс для пользовательских иерархий исключений, а также для перехвата всех исключений, когда конкретный тип не известен. 3
- std::runtime_error — более специализированный класс, наследуемый от std::exception. 5 Предназначен для выброса в случае различных ошибок во время выполнения. 5 Например, ошибок ввода-вывода файлов, сетевых ошибок или других проблем, которые могут возникнуть только во время выполнения. 3
Таким образом, std::exception используется для общей базы исключений, а std::runtime_error — для конкретных ошибок во время выполнения, когда первопричина может быть не вполне очевидна. 23