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