Сценарий, в котором вы получите std::bad_alloc
, в большинстве случаев является сценарием, в котором вы пытались выделить слишком много памяти, и системе нечего дать. В большинстве случаев это не исправимая ошибка. Возможно, имеет смысл обернуть всю программу в блок try-catch, чтобы, возможно, выдать сообщение об ошибке ("System ran out of memory!"
), но в большинстве случаев не стоит перехватывать эту ошибку, потому что не будет разумного варианта восстановления для вашего программа.
Но обратите внимание, что я хеджирую свой язык здесь. Все зависит от того, какое приложение вы используете. Например, если вы пишете программу, которая адаптируется в зависимости от того, сколько памяти доступно (может быть, она пытается выделить 64 ГБ памяти, но если нет, то вместо этого она просто записывает / читает временные файлы?) может быть логично обернуть выделение, подобное этому, в блок try-catch и добавить логику для сценария, в котором происходит сбой выделения памяти.
Разница между сценариями, в которых вам нужно отлавливать эту ошибку, и тем, где ее нет, станет более очевидной, если вы будете тратить больше времени на написание кода.